在spring boot中整合redis
在已有的spring boot项目的pom中加入redis的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
依赖注入后就可以在类中自动装配redis类
@Autowired
private RedisTemplate redisTemplate;
redis中设置key value可以选择是否有失效时间
//设置有失效时间的redis
//第三个参数设置失效时间数值,第四个参数设置时间单位
redisTemplate.opsForValue().set(key,value,tokenMaxAge, TimeUnit.SECONDS);
//设置没有失效时间的redis
redisTemplate.opsForValue().set(key,value);
对cookie进行封装
public class CookieUtil {
/**
* 设置cookie
* @param response
* @param name cookie名字
* @param value cookie值
* @param maxAge cookie生命周期 以秒为单位
*/
public static void addCookie(HttpServletResponse response, String name, String value, int maxAge){
Cookie cookie = new Cookie(name,value);
cookie.setPath("/");
if(maxAge>0) cookie.setMaxAge(maxAge);
response.addCookie(cookie);
}
/**
* 根据名字获取cookie
* @param request
* @param name cookie名字
* @return
*/
public static Cookie getCookieByName(HttpServletRequest request, String name){
Map<String,Cookie> cookieMap = ReadCookieMap(request);
if(cookieMap.containsKey(name)){
Cookie cookie = (Cookie)cookieMap.get(name);
return cookie;
}else{
return null;
}
}
/**
* 将cookie封装到Map里面
* @param request
* @return
*/
private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){
Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
Cookie[] cookies = request.getCookies();
if(null!=cookies){
for(Cookie cookie : cookies){
cookieMap.put(cookie.getName(), cookie);
}
}
return cookieMap;
}
}
将cookie与redis整合起来
通过用户cookie把用户对应信息存储在redis中
//生成uuid存放在cookie
String uuid =RandomUtil.getUUID();
//添加保存cookie
CookieUtil.addCookie(response, Constant.Token,uuid,cookieMaxAge);
//设置有失效时间的redis
redisTemplate.opsForValue().set(uuid,value,tokenMaxAge, TimeUnit.SECONDS);
通过用户cookie把用户的信息从redis中取出
//取出cookie
Cookie cookie= CookieUtil.getCookieByName(request,Constant.Token);
if(cookie != null) {
String token = cookie.getValue();
Object object = redisTemplate.opsForValue().get(token);
if (object != null) {
//返回redis中所存的内容
return (String )object;
} else {
return null;
}
}else {
return null;
}
常用场景:用户登陆,用户产生唯一的标示UUID,将UUID存入cookie,将所对应的信息内容放在UUID对应的redis的中,通过读取用户的UUID来获得用户信息。