首页 > 解决方案 > 如何使 Redis 中的 HyperLogLog 过期?

问题描述

HyperLogLog占用 12KB 的空间。我在文档中看不到有关何时释放该存储空间的任何内容。

我目前的计划是EXPIRE每次打电话都打电话PFADD,但我找不到太多关于过期 HLL 的讨论,所以我想知道我是否做错了......

我计划使用 HLL 实时计算我网站上的活跃访问者数量。我只想保留过去一小时的计数,释放比这更早的任何东西。

标签: redishyperloglog

解决方案


不,您不能使添加到 HLL 的项目过期。相反,EXPIRE命令将使整个 HLL 过期。

为了实现您的目标,您可以每小时创建 HLL,并在一段时间后使整个 HLL 失效。

// for the 2019082200
PFADD user:2019082200 user1
// also set expiration for the HLL, and expire it after 10 hours
EXPIRE user:2019082200 36000

// add more users
PFADD user:2019082200 user2

// until the next hour, create a new HLL for the next hour
PFADD user:2019082201 user1
EXPIRE user:2019082201 36000


推荐阅读