Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash 用于分析的redis密钥方案_Hash_Redis_Key - Fatal编程技术网

Hash 用于分析的redis密钥方案

Hash 用于分析的redis密钥方案,hash,redis,key,Hash,Redis,Key,我想使用redis创建分析-每个对象的基本计数器、每小时/天/周/月/年和总数 什么样的redis数据结构对此有效?如何避免多次调用redis 是否最好让每个模型都有以下几组关键点: 哈希-model::years=>每年都有一个计数器 哈希-模型::=>每个月都有一个计数器 哈希-模型::=>每天都有一个计数器 哈希-模型::=>每小时有一个计数器 如果这个方案是正确的,我如何在不多次调用redis的情况下绘制这些数据?我必须在model::years中循环全年,取月份,然后循环月份,等等?或

我想使用redis创建分析-每个对象的基本计数器、每小时/天/周/月/年和总数

什么样的redis数据结构对此有效?如何避免多次调用redis

是否最好让每个模型都有以下几组关键点:

哈希-
model::years
=>每年都有一个计数器

哈希-
模型::
=>每个月都有一个计数器

哈希-
模型::
=>每天都有一个计数器

哈希-
模型::
=>每小时有一个计数器

如果这个方案是正确的,我如何在不多次调用redis的情况下绘制这些数据?我必须在
model::years
中循环全年,取月份,然后循环月份,等等?或者我只是作为一个批处理请求从所有键中获取所有字段及其值,然后在服务器中处理这些字段?

最好使用一个来代替散列使用
时间戳
作为分数,您将能够检索特定时间范围的数据

对于日期范围,您将使用
模型::
,对于小时范围(使用
模型:::
)等等

事实上,如果日期范围大于一个月(例如,从2014年1月1日到2014年3月20日),则必须检索多个zset(
model::2014:01
model::2014:02
model::2014:03
)并合并结果

如果您确实希望在单个请求中设置日期范围,则始终可以在
模型::
中存储日精度数据。如果您想处理多年的日期范围,您只需要一个zset,例如
model::byDay


但是,请注意,存储历史数据会随着时间的推移增加内存消耗,因此您应该已经考虑过了。使用Redis,您可以在zset上使用
EXPIRE
,也可以自己使用cron。

谢谢,所以我每个模型使用一个zset,当我想要获取数据时,我使用ZRANGEBYSCORE,其中我提供了最小值和最大值作为日期范围?是否有一个地方可以查看zset的内存消耗情况,从而了解数据的保存时间?1/确实如此。2/redis cli info或Redsmin将帮助您监控全局内存使用情况,但遗憾的是,您无法可视化每个zset的内存消耗。我如何增加成员的值?因为分数是我不能使用zincrby的日期,zincrby不是增加分数吗?