在redis中驱逐hashmap中的键

时间:2016-09-07 07:59:08

标签: data-structures redis

我在Redis中有一个巨大的hashmap,它继续增长。每天大约5万,在随后的几天,这个数字会变得更少,因为相同的键会重复。我想将此hashmap限制​​为100万个键值对。我想基于LRU这样做。

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

所以我的要求是:

  1. 键值对结构
  2. 根据给定的密钥获取值或 多个键
  3. 用100万对修剪结构 lru政策。
  4. 我可以用哈希实现吗?我也对其他建议持开放态度?提前致谢

1 个答案:

答案 0 :(得分:4)

为什么不同时使用HASHSorted Set

  

将数据保存在HASH

HSET KEY FIELD VALUE

将您的数据保存在HASH中,即可实现"键值对结构" "根据给定值获取值键或多个键"

  

使用Sorted Set

实施LRU

ZADD KEY TIMESTAMP FIELD

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

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