gpt4 book ai didi

java - 如何使用 RedisTemplate 访问由 spring redis session 存储的散列 key ?

转载 作者:IT王子 更新时间:2023-10-29 06:09:37 24 4
gpt4 key购买 nike

我有这个问题。

在redis中存储了一个spring session,saved this way

HMSET spring:session:sessions:33fdd1b6-b496-4b33-9f7d-df96679d32fe creationTime 1404360000000 \
maxInactiveInterval 1800 \
lastAccessedTime 1404360000000 \
sessionAttr:attrName someAttrValue \
sessionAttr2:attrName someAttrValue2

据我了解是散列集。

我可以使用 HMGET 通过 redis-cli 访问它据我所知,这是获取散列键的值。

效果很好。

现在 Spring ,我想通过 Redis 模板 (org.springframework.data.redis.core) 访问它。

所以,我这样做了

@自动连线RedisOperationsSessionRepository redisOperationsSessionRepository;

@自动连线RedisTemplate redisTemplate;

并尝试...

stringRedisTemplate.opsForValue().get(loggedSessionId);

redisTemplate.opsForHash().get("mykey", WHAT GOES HERE?)
redisOperationsSessionRepository.sessionRedisOperations.opsForHash().get(mykey", OR HERE?)

到目前为止我无法访问它的信息,知道我必须定义什么散列吗?没有信息 spring 是如何得到它的......

谢谢。

编辑:

我基本上想做的是

复制这个

enter image description here

并使用另一个模板将其保存在其他redis中...

如您所见,它没有以正确的方式序列化值,如果我只是使用 opsForHash 复制和“粘贴”对象,或者我是否会保存损坏的数据,这可能是个问题?

最佳答案

引自 https://redis.io/topics/data-types

Redis Hashes are maps between string fields and string values ...

所以

redisTemplate.opsForHash().get("mykey", "myKeyHash")

将返回存储在键 mykey 中的字段 myKeyHash 的值。

对于您的考试,您的文件将是 creationTimemaxInactiveIntervallastAccessedTime 和属性。

顺便说一句,还有一个更方便的方法:

redisTemplate.opsForHash().entries("mykey")

返回该散列中包含的所有文件及其值的映射。

编辑

由于 Spring 使用 JdkSerializationRedisSerializer 用于值和 StringRedisSerializer 用于键/哈希键,您必须按如下方式配置 RedistTemplate 才能正确读取数据:

RedisTemplate<String, Object> template = new RedisTemplate<>(); 
RedisSerializer stringSerializer = new StringRedisSerializer();
template.setConnectionFactory(...);
template.setKeySerializer(stringSerializer);
template.setHashKeySerializer(stringSerializer);

关于java - 如何使用 RedisTemplate 访问由 spring redis session 存储的散列 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45247377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com