【问题标题】:Evicting keys inside hashmap in redis在redis的hashmap中驱逐键
【发布时间】:2016-09-07 07:59:07
【问题描述】:

我在 Redis 中有一个巨大的 hashmap,它一直在增长。每天大约 50k,在随后的几天里,这个数字将随着相同的键重复而减少。我想将此哈希图限制为 100 万个键值对。我想基于 LRU 做到这一点。

我知道我可以使用 Redis 的排序集以时间戳作为值并删除不在范围内的条目,但我需要保留键值对结构,当我移动到排序集时,我将丢失键值结构,因为值将是时间戳,我需要在键中执行一些字符串操作以实现等效的哈希功能(不可行)。

所以我的要求是:

  1. 键值对结构
  2. 根据给定键获取值或 多个键
  3. 用 100 万对修剪结构 lru 政策。

我可以用哈希来实现吗?我也愿意接受其他建议?在此先感谢

【问题讨论】:

    标签: data-structures redis


    【解决方案1】:

    为什么不同时使用HASHSorted Set

    将数据保存到HASH

    HSET KEY FIELD VALUE

    将您的数据保存在HASH,您可以同时实现“键值对结构”“根据给定键或多个键获取值”

    Sorted Set实现LRU

    ZADD KEY TIMESTAMP FIELD

    使用Sorted Set,您可以将时间戳保存为字段的分数。每次访问HASH中的字段时,用当前时间戳更新该字段的分数。

    如果Sorted Set 中的成员数大于一百万,则获取分数过小的字段(zcardzrange)。然后删除HASHSorted Set 中的这些字段。

    【讨论】:

    • 好一个。但是对我来说,对所有操作进行两次操作似乎是一种开销。会寻找更好的解决方案(如果有的话)
    • 对于它的价值,这是我会选择的解决方案 - 我会选择,但认为有更好的解决方案。
    猜你喜欢
    • 2013-01-31
    • 2020-07-10
    • 1970-01-01
    • 2013-12-29
    • 2020-10-13
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多