Redis bitmaps 使用

时间:2024-12-20 07:33:44

应用场景:

记录id为 1 的用户,2024年12月签到情况,并统计;

记录 1号签到

zxys-redis:0>setbit 1:202412 1 1

记录 2号签到

zxys-redis:0>setbit 1:202412 2 1

记录 3号未签到

zxys-redis:0>setbit 1:202412 3 0

记录 4号签到

zxys-redis:0>setbit 1:202412 4 1

查询 2 号是否签到

zxys-redis:0>getbit 1:202412 2
"1"

查询 3 号是否签到

zxys-redis:0>getbit 1:202412 3
"0"

统计 202412 签到总数

zxys-redis:0>bitcount 1:202412
"3"

统计 202411 签到总数

zxys-redis:0>bitcount 1:202411
"0"

Java代码

    public static void main(String[] args){

        Jedis jedis=new Jedis("127.0.0.1",6379);
        
        System.out.println("服务正在运行: " + jedis.ping());

        //1号签到
        jedis.setbit("1:202412",1,true);
        //2号签到
        jedis.setbit("1:202412",2,true);
        //3号未签到
        jedis.setbit("1:202412",3,false);
        //4号签到
        jedis.setbit("1:202412",4,true);
        //5号未签到
        jedis.setbit("1:202412",5,false);

        //2号是否签到
        System.out.println("2号是否签到" + jedis.getbit("1:202412",2));
        //5号是否签到
        System.out.println("5号是否签到" + jedis.getbit("1:202412",5));
        //202412月签到统计
        System.out.println("202412月签到统计" + jedis.bitcount("1:202412"));

        jedis.close();

    }

输出:

服务正在运行: PONG
2号是否签到true
5号是否签到false
202412月签到统计3