具有多个字段的 Redis HMSET 或用于查找的多个 HMSET

Redis HMSET with multiple fields or multiple HMSET for lookups

我是 Redis 新手。我有一个场景,我需要将数百万个项目放入 Redis 缓存中以供以后查找。如果在一段时间内未使用,则每个条目也需要过期。

一种方法是,一个带有字段和值的 HMSET,另一个 HMSET 来跟踪到期时间(大量簿记)

第二个选项是为每个设置了到期时间的条目设置 HMSET。 (我猜是简单的方法)。

我的问题是,Redis 是否被设计为拥有数百万个 HMSET?随着越来越多的 HMSET 被引入缓存的每个条目,它会降低 Redis 的性能吗? 跟进问题。如果我要使用字符串数据类型,是否同样适用?

  • 使用散列可以提高内存效率:https://redis.io/topics/memory-optimization
  • 内存节省根据 hash-max-zipmap-entrieshash-max-zipmap-value
  • 的设置而变化
  • 使用散列不允许您使键的单个字段过期,并且像您设置的那样,您需要另一个散列来记账。您可以编写 Lua 脚本来插入数据和簿记 ttl 数据;节省一些往返时间。
  • 拥有数百万的哈希就很好
  • 如果您觉得散列太大,可以随时将其分块。例如,将 id1000 取模,所以 id < 1000,将转到散列 0,等等......这样你最终会得到更少的散列