我正在努力寻找使用模式。对于每个请求,我将在当天的相应第二天进行标记并标记条目。最后,我将看到使用模式。在redis中执行此操作的最佳结构是什么?
答案 0 :(得分:2)
您可以通过三种方式存储它:
1)存储在单个密钥中的setbit操作
如果频率非常高,您可以使用setbit操作。也就是说,如果你标记几乎所有秒,那么你必须在其中存储86400个值。但这几乎不需要0.1 Mb存储。 即使您在第86400秒只存储一个条目,您也必须减去0.1 Mb。但它的固定尺寸始终为0.1 Mb。还要注意你可以把整个东西作为一个字符串,你必须将它们转换为位。
setbit date second
get date
2)设置
如果频率很低,您可以使用套装。因此,只有请求到来的那些秒才会出现在您的集合中。
Sadd date second
smembers date
3)哈希
如果想知道每秒的计数,可以使用哈希值。
Hincrby date second 1
hgetall date
还要对所有这些进行样本测试,并比较尺寸和效率。
答案 1 :(得分:0)
我白天会使用哈希分组。
// Set the counter to 0 if it doesn't exist.
HSETNX [DAY] [SECOND] 0
// Increment the counter by 1 each request
HINCRBY [DAY] [SECOND] 1
然后使用HKEYS
或HSCAN
来获得结果。