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()); }
参考资料: