分布式會(huì)話(huà)實(shí)現(xiàn)(Springboot+redis)
安裝
- 服務(wù)器上安裝redis
- 在redis官網(wǎng)找到最新下載鏈接,執(zhí)行
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
chmod -R 777 redis-5.0.5.tar.gz
tar -xvzf redis-5.0.5.tar.gz
- 進(jìn)入redis目錄,使用make指令編譯redis,使用make install命令安裝redis
cd redis-5.0.5
make
make install
- 進(jìn)入src目錄,看到redis-server進(jìn)程,執(zhí)行./redis-server啟動(dòng)
./redis-server &
- 使用./redis-cli默認(rèn)連接本地端口6379的redis
./redis-cli
set key name
get key
配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
- 創(chuàng)建RedisConfig類(lèi)
添加兩個(gè)注解
@Component
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600)
public class RedisConfig {
}
- 配置springboot對(duì)redis的依賴(lài)
#配置springboot對(duì)redis的依賴(lài)
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.database=10
#spring.redis.password=
#設(shè)置jedis連接池
spring.redis.jedis.pool.max-active=50
spring.redis.jedis.pool.min-idle=20
- 報(bào)錯(cuò)DefaultSerializer requires a Serializable payload but received an object of type
redis使用的序列化方式就是jdk默認(rèn)的Serializable,因此要實(shí)現(xiàn)Serializable接口。
更好的方式是使用JSON的序列化方式。
- 服務(wù)器端redis目錄下redis.conf修改配置,在#bind 127.0.0.1 ::1下增加
bind *ip*
redis應(yīng)用
@Autowired
private RedisTemplate redisTemplate;
//修改成若用戶(hù)登錄驗(yàn)證成功后將對(duì)應(yīng)的登錄信息和登錄憑證一起存入redis中
//生成登錄憑證token, UUID
String uuidToken = UUID.randomUUID().toString();
uuidToken = uuidToken.replace("-","");
//建立token和用戶(hù)登錄態(tài)之間的聯(lián)系
redisTemplate.opsForValue().set(uuidToken,userModel);
redisTemplate.expire(uuidToken,1, TimeUnit.HOURS);
var token = data.data;
window.localStorage["token"] = token;
- 后端校驗(yàn)token,并且讀取用戶(hù)model
String token = httpServletRequest.getParameterMap().get("token")[0];
if(StringUtils.isEmpty(token)){
throw new BusinessException(EmBusinessError.USER_NOT_LOGIN, "用戶(hù)還未登陸不能下單");
}
UserModel userModel = (UserModel) redisTemplate.opsForValue().get(token);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。