Redis
windows下安装Redis
Springboot中集成Redis
生成token并存到redis
更新用户个性签名接口
退出登录接口
1. Redis
是
基于内存的
NoSQL
数据库
Redis
是目前最流行的
键值对
存储数据库,由一个
Key
、
Value
映射的字典构成,其中
Value
的类型不局限于字符串,还支持列表、集 合、有序集合、散列等
与
MySQL
、
Oracle
、
SQL Server
等传统关系型数据库相比,它最大的优势就是读写速度快
2.下载压缩文件并解压:https://redis.io/download
方法一:cd
到安装目录,并运行命令
redis-server.exe
启动
服务
方法二
:
(1)把 redis 设置为一个 windows 服务: redis-server.exe --service-install redis.windows-service.conf
(2)开启服务:redis-server.exe --service-start
(3) 可以在配置文件中(redis.windows.conf,这个文件中密码是被注释的443行,打开之后可以设置密码)
设置密码:requirepass xxxxx
3.
(1)pom.xml 中引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
(2)配置文件中配置redis的连接信息
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.database=0
4.
(1)生成token并存到redis
String token= UUID.randomUUID().toString();
redisTemplate.opsForValue().set(token, JSONObject.toJSONString(user));
(2) 整合 fastjson依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.76</version>
</dependency>
5.controller 层
@PostMapping("/signature")
public ApiResponse updateSignature(@Valid @RequestBody SignatureSo signatureSo, @RequestHeader("token") String token){
if(token==null || token.equals("")){
return new ApiResponse(false,"用户未登陆,请先登录");
}else {
String strUser= (String) redisTemplate.opsForValue().get(token);
User user= JSONObject.parseObject(strUser,User.class);
if(user==null){
return new ApiResponse(false,"请重新登陆");
}else {
user.setPersonalizedSignature(signatureSo.getSignature());
return userService.updateSignature(user);
}
}
}
service 层
public ApiResponse updateSignature(User user){
int count=userMapper.updateByPrimaryKeySelective(user);
if(count==0){
return new ApiResponse(false,"更新失败");
}else {
return new ApiResponse(true,"更新成功");
}
}
6.
@PostMapping("/logout")
public ApiResponse logout(@RequestHeader("token") String token){
if(token==null || token.equals("")){
return new ApiResponse(false,"用户未登陆,请先登录");
}else {
String strUser= (String) redisTemplate.opsForValue().get(token);
User user= JSONObject.parseObject(strUser,User.class);
if(user==null){
return new ApiResponse(false,"用户认证不正确");
}else {
redisTemplate.delete(token);
return new ApiResponse(true,"已退出登录");
}
}
}