1.案例
互聯網應用中都會有簽到功能,吸引更多的用戶,保持產品活躍度
如何判斷用戶連續簽到7天
簽到 1 天送 10 積分,連續簽到 2 天送 20 積分,3 天送 30 積分,4 天以上均送 50 積分
如何顯示用戶某個月的連續簽到次數和總簽到次數
可以使用 redis 利用 BitMap 位圖來存儲簽到數據,節省空間
2.操作
GETBIT <key> <offset> <value>
3.案例
- 指定時間內,判斷多少人簽到連續簽到成功
// SETBIT 日期 用戶ID value
SETBIT 20211015 10 1
SETBIT 20211016 10 1
SETBIT 20211017 10 1
SETBIT 20211018 10 1
SETBIT 20211015 20 1
SETBIT 20211016 20 0
SETBIT 20211017 20 1
SETBIT 20211018 20 1
SETBIT 20211015 30 1
SETBIT 20211016 30 1
SETBIT 20211017 30 1
SETBIT 20211018 30 1
SETBIT 20211015 40 1
SETBIT 20211016 40 0
SETBIT 20211017 40 0
SETBIT 20211018 40 1
BITOP AND destmap 20211015 20211016 20211017 20211018
BITCOUNT destmap
2
-
查詢用戶是否連續簽到
如設置用戶10月份簽到數據
// SETBIT 用戶ID+月份 日期 value
SETBIT Sign:2094592473:202110 0 1
SETBIT Sign:2094592473:202110 7 1
SETBIT Sign:2094592473:202110 8 1
SETBIT Sign:2094592473:202110 9 0
SETBIT Sign:2094592473:202110 10 1
SETBIT Sign:2094592473:202110 11 1
SETBIT Sign:2094592473:202110 12 1
SETBIT Sign:2094592473:202110 13 0
SETBIT Sign:2094592473:202110 14 1
SETBIT Sign:2094592473:202110 15 1
SETBIT Sign:2094592473:202110 16 1
SETBIT Sign:2094592473:202110 17 1
SETBIT Sign:2094592473:202110 18 1
SETBIT Sign:2094592473:202110 19 1
SETBIT Sign:2094592473:202110 20 1
// 獲取10月31天的簽到數據
BITFIELD Sign:2094592473:202110 get u31 0 7
1) (integer) 14547968
// 轉換成二進制
110111011111110000000000
// 判斷是否有連續7天的1
- 查詢用戶 10月 簽到總次數
BITCOUNT Sign:2094592473:202110
4.相關推薦
在線redis測試:在線 reids
其他文章: