以每个小时作为zset的key的实现方案

原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/14661797.html

zset常规操作

127.0.0.1:6379> zadd my_key 1 one
(integer) 1
127.0.0.1:6379> zadd my_key 2 two
(integer) 1
127.0.0.1:6379> zadd my_key 3 three
(integer) 1
127.0.0.1:6379> zadd my_key 4 four
(integer) 1
127.0.0.1:6379> zrange my_key 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
7) "four"
8) "4"
127.0.0.1:6379>

以每个小时作为zset的key

先把当前时间转换为 毫秒 的时间戳,然后除以1小时,即 小时序号 = System.currentTimeMillis() / 1000 / 60 / 60

然后用这个 小时序号 作为zset的key,zadd 小时序号 score member

package org.fool.test;

public class Test {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis() / 1000 / 60 / 60);
        // 2021-04-15 10:00:00
        long l1 = 1618452000000L;
        // 449570
        System.out.println(l1 / 1000 / 60 / 60);

        // 2021-04-15 10:30:00
        long l2 = 1618453800000L;
        // 449570
        System.out.println(l2 / 1000 / 60 / 60);

        // 2021-04-15 10:59:59
        long l3 = 1618455599000L;
        // 449570
        System.out.println(l3 / 1000 / 60 / 60);

        // 2021-04-15 11:00:00
        long l4 = 1618455600000L;
        // 449571
        System.out.println(l4 / 1000 / 60 / 60);
    }
}
强者自救 圣者渡人
原文地址:https://www.cnblogs.com/agilestyle/p/14661797.html