如何在redis中存储每一秒数据

时间:2016-06-18 08:49:53

标签: redis

我正在努力寻找使用模式。对于每个请求,我将在当天的相应第二天进行标记并标记条目。最后,我将看到使用模式。在redis中执行此操作的最佳结构是什么?

2 个答案:

答案 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

然后使用HKEYSHSCAN来获得结果。