你如何使 Redis 中的哈希字段过期?
How do you expire a field of a hash in Redis?
我想在不同的时间后使哈希的某些字段过期。从文档看来不可能:http://redis.io/commands/expire。我能以某种方式模仿这种行为吗?目前,我只是将哈希名称复制为所有字段的前缀,并为每个字段添加过期时间。对于我要存储的结构是:
"PEOPLE" : {
"NICK" : 29
"AMANDA" : 23
}
但我无法在 "NICK" 上设置过期,只能在整个哈希 "PEOPLE" 上设置。所以我把它转换成键的数量,值:
"PEOPLE_NICK" : 29 (expire 2 hours)
"PEOPLE_AMANDA" 23 (expire 1 hour)
但是有很多键,这使得管理变得非常困难并且获取起来更加乏味,因为我必须通过公共前缀获取所有内容。
如果上面的例子是一个准确的表示,并且取决于你将如何准确地使用数据,你可以使用一个排序集,每个人的分数是一个 Unix 时间戳。然后,您将在 Cron 作业上使用 zremrangebyscore 来清除您无法接受的项目 window。
我想在不同的时间后使哈希的某些字段过期。从文档看来不可能:http://redis.io/commands/expire。我能以某种方式模仿这种行为吗?目前,我只是将哈希名称复制为所有字段的前缀,并为每个字段添加过期时间。对于我要存储的结构是:
"PEOPLE" : {
"NICK" : 29
"AMANDA" : 23
}
但我无法在 "NICK" 上设置过期,只能在整个哈希 "PEOPLE" 上设置。所以我把它转换成键的数量,值:
"PEOPLE_NICK" : 29 (expire 2 hours)
"PEOPLE_AMANDA" 23 (expire 1 hour)
但是有很多键,这使得管理变得非常困难并且获取起来更加乏味,因为我必须通过公共前缀获取所有内容。
如果上面的例子是一个准确的表示,并且取决于你将如何准确地使用数据,你可以使用一个排序集,每个人的分数是一个 Unix 时间戳。然后,您将在 Cron 作业上使用 zremrangebyscore 来清除您无法接受的项目 window。