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上每位代表一个用户,如果重复登陆,则是重复对某位设置,不会影响结果。

布隆过滤器

复制代码
相关推荐
小钻风336612 小时前
Redis初阶学习
数据库·redis·缓存
赵得C14 小时前
Spring Boot 实现数据库表变更监听的 Redis 消息队列方案
数据库·spring boot·redis·监听
该用户已不存在17 小时前
Redis到底什么,该怎么用
数据库·redis·后端
知彼解己1 天前
Redis 集群模式与高可用机制
数据库·redis·缓存
海梨花1 天前
字节跳动后端 一面凉经
java·redis·学习·leetcode·面经
爱隐身的官人1 天前
新后端漏洞(上)- Redis 4.x5.x 未授权访问漏洞
redis·未授权访问漏洞
Kookoos1 天前
多租户配额与预算:限额、配额周期与突发桶的结算模型(Final)
redis·令牌桶·abp vnext·配额·突发桶·账期结算
洛洛呀。1 天前
Redis基础概述
数据库·redis·缓存
zzhongcy1 天前
Valkey vs Redis详解
数据库·redis·缓存
技术小泽1 天前
Redis-底层数据结构篇
数据结构·数据库·redis·后端·性能优化