当前位置: 首页 > news >正文

redis-bitmap使用场景

bitmap原理

Bitmap(位图)是一种基于二进制位的数据结构,用于高效地存储和操作大量的布尔值

可以对单个位进行读写操作

demo

package org.example;

import org.redisson.Redisson;
import org.redisson.api.RBitSet;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;

public class BitmapTest {



    private static final RedissonClient redisson;

    static {
        Config config = new Config();
        config.useSingleServer()
                .setAddress("redis://******.redis.rds.aliyuncs.com:6379")
                .setUsername("******")
                .setPassword("*******")
        ;
        redisson = Redisson.create(config);
    }

    public static void main(String[] args) {

        // 获取 Bitmap 对象
        RBitSet bitSet = redisson.getBitSet("myBitMap");
        // 操作 Bitmap
        bitSet.set(0, true);  // 设置第 0 位为 1
        bitSet.set(1, false); // 设置第 1 位为 0
        bitSet.set(20, 30, true); // 设置第 20 到 29 位为 1

        // 获取位的值
        boolean bitValue = bitSet.get(0);
        System.out.println("Bit at position 0: " + bitValue);


        boolean bit1Value = bitSet.get(1);
        System.out.println("Bit at position 1: " + bit1Value);

        // 未设置的默认false
        boolean bit100Value = bitSet.get(100);
        System.out.println("Bit at position 100: " + bit100Value);

        // 统计所有为1的个数
        long count = bitSet.cardinality();   
        System.out.println("Number of bits set to 1: " + count);

        获取 Bitmap 的长度
        long size = bitSet.size();
        System.out.println("Bitmap size: " + size);

        // 关闭 Redisson 客户端
        redisson.shutdown();
    }

}

 

Bitmap 的长度是动态扩展的

未设置的位默认为 0

使用场景

用户签到

统计活跃用户

统计每天使用系统的用户总数,bitmap上每位代表一个用户,如果重复登陆,则是重复对某位设置,不会影响结果。

布隆过滤器


                

相关文章:

  • CSS中的`position`属性的几种定位方式
  • 计算机视觉算法实战——三维重建(主页有源码)
  • Linux提权之suid提权(六)
  • Python--函数进阶(下)
  • SpringBoot+Vue+微信小程序的猫咖小程序平台(程序+论文+讲解+安装+调试+售后)
  • Http模块及练习
  • C++单例模板类,继承及使用
  • C语言宏定义的底层应用
  • 【SpringMVC】概述 SSM:Spring + SpringMVC + Mybats
  • 在CentOS安装Docker
  • Redis常用数据类型及其应用案例
  • 机器学习数学基础:30.Pearson相关系数及t检验教程
  • 信息安全实战04_ECC椭圆曲线加密算法原理详解
  • 蓝桥杯试题:区间次方和(前缀和)
  • Gin从入门到精通 (四)请求参数
  • 网络运维学习笔记 022 HCIA-Datacom新增知识点03园区网典型组网架构及案例实战
  • 第一届网谷杯
  • 力扣每日一题【算法学习day.133】
  • 敏捷开发08:如何高效开每日站会(Daily Stand-up Meeting)
  • LEARNING ON LARGE-SCALE TEXT-ATTRIBUTED GRAPHS VIA VARIATIONAL INFERENCE
  • 湖北鄂州通报4所小学学生呕吐腹泻:供餐企业负责人被采取强制措施
  • 神舟十九号载人飞行任务取得圆满成功
  • 国铁集团郑州局预计“五一”发送642.5万人
  • 游客曝九寨沟打网约车被出租车围堵,景区回应:当地无合规网约车
  • 病人有头发,照护者不发疯:《黑镜》中的身体缺席与虚伪关怀
  • “不意外”和“不遗余力”,直击上海商超对接外贸企业