在实际业务中,规则检查的结果集保存在redis中。
以 Rule:GlsId:defectCnt:Oos:Ooc:GlsId:RuleId。以ruleID为score存入redis。
类似于这种语法,此处可以看到score其实就是一个时间,这个epochSecond时间是simpleTime.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
epoch是纪元时间,是1970年为1s一直往后累加以秒为单位的一个时间。
Double score = Double.valueOf(epochSecond); final String key = String.format("history:%s", opeId); String redisValue = String.format("%s:%s:%s:%s:%s:%s:%s:%s", "","","","","",""); jedis.zadd(key, score, redisValue);
其中scroe指的就是该有序集合成员的次序。默认从小到大。
http://doc.redisfans.com/sorted_set/zrange.html
-----------------------------------update 2019年12月21日15:48:17--------------------------
sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set结构。和set相比,sorted set关联了一个double类型权重的参数score,使得集合中的元素能够按照score进行有序排列,redis正是通过分数来为集合中的成员进行从小到大的排序。
实现方式:Redis sorted set的内部使用HashMap和跳跃表(skipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。