spring boot的redis操作类RedisTemplate
背景:
如果不把session存储到redis里,而是采用传统的方式,在前后端分离的项目中,会出现获取不到session的情况
String verificationCodeIn = (String) httpServletRequest.getSession().getAttribute(verificationCode);
httpServletRequest.getSession().removeAttribute(verificationCode);
使用spring session,把session存储到redis里,对session的管理和扩展更方便,还有一个好处是,不需要自己维护session的状态,过期会自动删除。
在spring boot里使用redis,需要先引入redis的依赖,如下:
<!-- redis -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
<!-- redis 客户端 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
一、判断redis某个key的类型
DataType testType = redisTemplate.type("testRedis");
如果读取到redis的key的类型是Integer,想要转成String,怎么办呢?
不建议使用 String.valueOf,很可能会报类型转换错误,正确的方法是使用Integer的toString方法,举个例子:
Integer testValue = (Integer) redisTemplate.opsForValue().get("testRedis");
String testString = testValue.toString();
二、写hash
HashMap<String, Object> map = new HashMap<>(); map.put("name", "张三"); map.put("age", "23"); map.put("sex", "男"); redisTemplate.opsForHash().putAll("user", map); //使用entries获取整个user对象 log.info("user = {}", redisTemplate.opsForHash().entries("user"));
三、读hash
Map<Object, Object> entries = redisTemplate.opsForHash().entries("test");
for(Map.Entry<Object, Object> entry : entries.entrySet()){
log.info(entry.getKey()+"======"+entry.getValue());
}
参考资料:

浙公网安备 33010602011771号