【发布时间】:2022-01-12 06:29:43
【问题描述】:
什么是 Spring boot 中的 Redis Value 操作?
是不是我们可以直接将键值对存储在 Redis 数据库中,而无需使用 RedisTemplate<String, Object> 创建实体和东西?
另外,如果我们使用ValueOperations,它会如何影响性能?
【问题讨论】:
标签: spring-boot caching redis spring-data
什么是 Spring boot 中的 Redis Value 操作?
是不是我们可以直接将键值对存储在 Redis 数据库中,而无需使用 RedisTemplate<String, Object> 创建实体和东西?
另外,如果我们使用ValueOperations,它会如何影响性能?
【问题讨论】:
标签: spring-boot caching redis spring-data
在使用 Redis 时,您应该考虑哪种数据格式/数据类型最适合您的需求,类似于使用任何通用编程语言进行编码时所做的事情。所有这些操作,ValueOperations, ListOperations, SetOperations, HashOperations, StreamOperations 是为与上述数据类型交互提供的支持。它们由RedisTemplate 提供。
当您使用ValueOperations 时,您或多或少地将整个 Redis 实例视为一个巨大的哈希映射。例如,您可以将条目存储在 Redis 中,例如 current_user = "John Doe"。但是,您也可以做一些愚蠢的事情,例如将一个巨大的哈希图的字符串表示与一个键保持一致,top_users = <huge_string_representing_a_hash_map> 从第二种情况的角度考虑时,如果您想在提到的哈希中获取一个键的值怎么办地图。然后,如果不将整个哈希映射转移到 RAM 中,该任务或多或少变得不可能。但是,如果您使用过 Redis Hashes 和 HashOperations,那将是一项更简单的任务。
回到您的问题,如果您想使用 ValueOperations 存储一个简单的对象。这不会降低性能。相比之下,如果您要移动巨大的地图,则会占用大量网络带宽和 RAM 容量。
总之,请仔细选择您的 Redist 数据类型以满足您的需求。 https://redis.io/topics/data-types
【讨论】: