我需要有一个网站上最近访问者的列表(在最后N分钟打开一个页面的授权用户)。为此,我实现了一个处理所有页面调用的代码,并将一对(user_id,timestamp)发送到存储。我不想每次都为它更新数据库表,所以我想为它使用缓存。我可以将缓存中的python字典存储为一个对象,获取并更新它,但效率不高。我试着看看Redis数据结构,从一方面看Hash看起来不错(user_id - > timestamp)但看起来我无法根据时间戳的范围有效地使用Redis来获取所有uid。因此,我需要获取所有键和值,迭代键并检查相关值。看起来Redis中没有命令从哈希中删除多个键。是否可以使用Redis内置结构处理此类数据结构?谢谢!
答案 0 :(得分:1)
而不是哈希,请查看使用排序集。
将您的ID保存为集合的成员,并使用时间戳(纪元)作为分数。根据{{1}}的时间戳检索最近的访问者,并使用Z[REV]RANGEBYSCORE
删除旧访问者。