jpg*_*z18 3 java session spring redis
我有这个问题。
有存储在Redis的一个春季会议,保存这样
HMSET spring:session:sessions:33fdd1b6-b496-4b33-9f7d-df96679d32fe creationTime 1404360000000 \
maxInactiveInterval 1800 \
lastAccessedTime 1404360000000 \
sessionAttr:attrName someAttrValue \
sessionAttr2:attrName someAttrValue2
Run Code Online (Sandbox Code Playgroud)
据我了解是一个散列集。
我可以通过带有HMGET 的redis-cli 访问它 ,据我所知是获取散列键的值。
效果很好。
现在在春天,我想通过 Redis 模板(org.springframework.data.redis.core)访问它。
所以,我做了这个
@Autowired RedisOperationsSessionRepository redisOperationsSessionRepository;
@Autowired RedisTemplate redisTemplate;
并尝试...
stringRedisTemplate.opsForValue().get(loggedSessionId);
redisTemplate.opsForHash().get("mykey", WHAT GOES HERE?)
redisOperationsSessionRepository.sessionRedisOperations.opsForHash().get(mykey", OR HERE?)
Run Code Online (Sandbox Code Playgroud)
到目前为止我无法访问它的信息,知道我必须定义什么哈希吗?没有信息春天是如何得到它的......
谢谢。
编辑:
我基本上想做的是
复制这个
并使用另一个模板将其保存在其他redis中...
如您所见,它没有以正确的方式序列化的值,如果我只是使用 opsForHash 复制和“粘贴”对象可能会出现问题,或者我会保存损坏的数据吗?
引自https://redis.io/topics/data-types
Redis 哈希是字符串字段和字符串值之间的映射......
所以
redisTemplate.opsForHash().get("mykey", "myKeyHash")
Run Code Online (Sandbox Code Playgroud)
将返回存储在键mykey中的字段myKeyHash 的值。
对于您的示例,您的文件将是creationTime、maxInactiveInterval、lastAccessedTime和属性。
顺便说一下,还有一个更方便的方法:
redisTemplate.opsForHash().entries("mykey")
Run Code Online (Sandbox Code Playgroud)
返回包含在该哈希中的所有文件及其值的映射。
编辑
由于 Spring 对值使用JdkSerializationRedisSerializer,对键/哈希键使用StringRedisSerializer,因此您必须按如下方式配置 RedistTemplate 才能正确读取数据:
RedisTemplate<String, Object> template = new RedisTemplate<>();
RedisSerializer stringSerializer = new StringRedisSerializer();
template.setConnectionFactory(...);
template.setKeySerializer(stringSerializer);
template.setHashKeySerializer(stringSerializer);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4975 次 |
| 最近记录: |