2017-09-25 135 views
0

的情况是:当我运行一个测试,如果再失败店时间戳和Redis的失败值,获得最后三个时间戳和值相同的测试,如果一切都失败了,送一个电子邮件项目负责人。Redis的数据类型存储相同的价值观与不同的分数

我想关在Redis的增加分数排序zset:

zadd Health:TestName timestamp1 "Fail" 
zadd Health:TestName timestamp2 "Success" 
zadd Health:TestName timestamp3 "Fail" 
zadd Health:TestName timestamp4 "Fail" 
zadd Health:TestName timestamp5 "Fail" 

所以,如果我跑测试TestName现在,如果失败,I get last three timestamps and values and check if all are Fail。如果全部都失败,则发送电子邮件。但Zadd不允许我为不同的分值增加值相同。什么可能是另一种方式来存储这些数据。

注意。我只使用redis

回答

1

的“绝招”这里是使成员唯一的,最简单的方法是连接的结果,时间戳,即:

zadd Health:TestName timestamp1 "Fail:timestamp1" 
zadd Health:TestName timestamp2 "Success:timestamp2" 
zadd Health:TestName timestamp3 "Fail:timestamp3" 
zadd Health:TestName timestamp4 "Fail:timestamp4" 
zadd Health:TestName timestamp5 "Fail:timestamp5" 

然后,获取成员时,简单地忽略后缀。

提示:保存RAM,切换到使用短-AS-可能串。在你的情况,而不是“失败”和“成功”只是用0和1(或“F”和“S” ...),这样可以节省每个成员9个字节。您也可以删除冒号(“:”)串联一个额外的保存字节,即Ftimestamp1Stimestamp2等等时。

相关问题