【问题标题】:How can I get customized value from Redis cache?如何从 Redis 缓存中获取自定义值?
【发布时间】:2019-07-25 09:42:34
【问题描述】:

我正在使用 Spring Boot 开发 Redis。 我是 Redis 的新手。 我遇到了一个问题,我需要来自 Redis 缓存的自定义数据。

例如key为1,Redis中存储的对象为

{
    name,
    age,
    DOB,
    ...    
}

我只想从 Redis 中检索其中的 2 个,例如姓名和年龄 但是对于给定的键,Redis 返回完整的对象。 但我只需要该对象的自定义字段。

我不知道如何解决这个问题,我不能只缓存 2 个必填字段。 其他目的需要缓存整个对象。

请帮忙。 提前致谢。

【问题讨论】:

  • 对象可以是这样的 { "name" : "John Doe", "age": 30, . : }
  • @Ameen.M 是的对象是键值对类型

标签: java spring-boot redis


【解决方案1】:

您可以使用 hmget 操作并指定您需要的字段。来自official documentation 的下一个示例:

redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HMGET myhash field1 field2 nofield
1) "Hello"
2) "World"
3) (nil)

已编辑: 如果你更喜欢使用list,它可能看起来像这样:

RPUSH mylist "name"
(integer) 1
redis> RPUSH mylist "age"
(integer) 2
redis> RPUSH mylist "DOB"
(integer) 3

然后就可以使用了

LRANGE mylist 0 1
1) "name"
2) "age"

但是,如果您需要将一个对象的键与值关联起来,则更优雅的将是哈希数据结构

【讨论】:

  • 它给出了错误:“对持有错误值的键的错误类型操作”@Vlad
  • 以上示例为Hashes 数据结构。您使用的是什么结构?如果它是一个列表,你可以这样做 LRANGE mylist 0 1 这从列表中返回前两个值
  • 我正在使用 hmset 将值 e.g. jedis.hmset(key, value); 放在其中 value 是 Map
  • 当您尝试从列表中获取值时出现错误,但已为另一个数据结构创建了键。我可以建议您清除所有密钥,然后使用 Hashes 完成此任务
  • 你能帮我举一个列表类型的例子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 2019-09-18
  • 1970-01-01
  • 2022-01-15
  • 2017-12-04
相关资源
最近更新 更多