BITOP :将多个BitMap的结果做位运算(与 、或、异或) BITPOS :查找bit数组中指定范围内第一个0或1出现的位置 2 实现签到功能 需求:实现签到接口,将当前用户当天签到信息保存到Redis中 思路:我们可以把年和月作为bitMap的key,然后保存到一个bitMap中,每次签到就到对应的位上把数字从0变成1,只要对应是1,就表明...
使用Redis的bitmap实现签到? 使用bitmap做签到,真的是很扯的一件事!!#java #软件开发 #互联网 #面试 #架构师 - Java陆总监于20240819发布在抖音,已经收获了32.0万个喜欢,来抖音,记录美好生活!
在Redis 中,Bitmap 是一种特殊的字符串类型,用于存储和操作位数据。Redis 的 Bitmap 数据结构可以支持非常高效的位操作和查询,适用于大规模的数据集。 2. Redis Bitmap 的使用 2.1 设置用户签到状态 使用Redis Bitmap 来存储用户签到的状态非常高效。可以为每个用户创建一个对应的 Bitmap,每一位代表一天的签到状...
// https://github.com/chenmingyong0423/blog/blob/master/tutorial-code/go/redis-bitmap-sign/sign/main.gopackagemainimport("context""fmt""github.com/redis/go-redis/v9")funcRedisClient()*redis.Client{returnredis.NewClient(&redis.Options{Addr:"localhost:6379",Password:"",// no password setDB:...
在日历控件上展示用户每月签到情况,可以切换年月显示 bitmaps Bitmaps,位图,不是 Redis 的基本数据类型(比如 String、List、Set、Hashset),而是基于 String 数据类型的按位操作,高阶数据类型的一种。Bitmap 支持最大位数 232 位。使用 512M 内存就可以存储多达 42.9 亿的字节信息(232 = 4,294,967,296)。
实现步骤 下面通过具体的代码来展示如何使用Java结合Redis的bitmap实现签到功能。 环境准备 为了操作Redis,我们使用Jedis库。确保你已经将Jedis作为依赖添加到你的Java项目中。 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>最新版本</version></dependency> ...
BITMAP实现签到 场景需求 适用场景如签到送积分、签到领取奖励等,大致需求如下: 签到1天送1积分,连续签到2天送2积分,3天送3积分,3天以上均送3积分等。 如果连续签到中断,则重置计数,每月初重置计数。 当月签到满3 天领取奖励1,满5 天领取奖励2,满7天领取奖励3……等等。
在用户签到功能中,可以利用 Redis 的 BitMap 功能来高效地记录和统计用户的签到情况。假设我们需要记录一个用户在一个月内的签到状态,可以将这31天的签到数据压缩存储在仅2字节的空间内。具体实现步骤如下: 定义键名:为每个用户生成一个唯一的键名,例如user:sign:userId,其中userId是用户的唯一标识。
实现步骤 初始化用户签到 Bitmap 首先,为每个用户创建一个对应的 Bitmap。每一位代表一天,例如第 0 位表示第一天,第 1 位表示第二天,以此类推。 # 设置用户1在第1、3、5天签到 SETBIT user:1 0 1 SETBIT user:1 2 1 SETBIT user:1 4 1 ...
我们使用Redis的Bitmap进行签到,使用org.springframework.data.redis.core包下的opsForValue进行签到信息映射; 方法结构 其中,公共方法: isSigned:传入用户Key和校验签到日期,判断是否有签到。 daSign:传入用户信息和需要签到的日期,返回签到结果(连续签到天数等) ...