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

布隆过滤器

复制代码
相关推荐
未来会更好yes6 小时前
Centos 7.6安装redis-6.2.6
linux·redis·centos
熏鱼的小迷弟Liu9 小时前
【Redis】Redis Zset实现原理:跳表+哈希表的精妙设计
数据库·redis·散列表
观无11 小时前
Redis远程链接应用案例
数据库·redis·缓存·c#
好想有猫猫14 小时前
【Redis】服务端高并发分布式结构演进之路
数据库·c++·redis·分布式·缓存
孔令飞14 小时前
使用 Go 与 Redis Streams 构建可靠的事件驱动系统
redis·ai·云原生·golang·kubernetes
yuanlaile15 小时前
Go全栈_Golang、Gin实战、Gorm实战、Go_Socket、Redis、Elasticsearch、微服务、K8s、RabbitMQ全家桶
linux·redis·golang·k8s·rabbitmq·gin
高效匠人15 小时前
FastAPI + Redis Pub/Sub + WebSocket 组合解决方案的详细介绍
redis·websocket·fastapi
lovebugs15 小时前
Redis的高性能奥秘:深入解析IO多路复用与单线程事件驱动模型
redis·后端·面试
异常君18 小时前
Redis 中的概率过滤器:布隆过滤器与布谷鸟过滤器实战对比
java·redis·后端
多多*20 小时前
非关系型数据库 八股文 Redis相关 缓存雪崩 击穿 穿透
java·开发语言·jvm·数据库·redis·缓存·nosql