redis 實現7天連續簽到




1.案例

互聯網應用中都會有簽到功能,吸引更多的用戶,保持產品活躍度

如何判斷用戶連續簽到7天

簽到 1 天送 10 積分,連續簽到 2 天送 20 積分,3 天送 30 積分,4 天以上均送 50 積分

如何顯示用戶某個月的連續簽到次數和總簽到次數

可以使用 redis 利用 BitMap 位圖來存儲簽到數據,節省空間


2.操作

GETBIT <key> <offset> <value>

3.案例

  1. 指定時間內,判斷多少人簽到連續簽到成功
// 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

  1. 查詢用戶是否連續簽到

    如設置用戶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

  1. 查詢用戶 10月 簽到總次數
BITCOUNT Sign:2094592473:202110

4.相關推薦

在線redis測試:在線 reids

其他文章:

《為什么我推薦你使用 Redis 實現用戶簽到系統》

《基於Redis位圖實現用戶簽到功能》

《Redis 實戰篇:巧用 Bitmap 實現億級數據統計》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM