记录签到
- 确定键名:使用一个唯一标识用户的键名,例如可以使用用户ID作为键名,如
user:{userId}:sign
。
- 确定偏移量:使用日期作为偏移量。假设一个月最多31天,可以将1 - 31作为偏移量,日期1对应偏移量0,日期2对应偏移量1,以此类推。
- 记录签到:使用Redis的
SETBIT
命令。例如在Python中使用redis - py
库:
import redis
r = redis.Redis(host='localhost', port=6379, db = 0)
# 假设用户ID为1,今天是本月第5天
user_id = 1
day = 5
key = f"user:{user_id}:sign"
r.setbit(key, day - 1, 1)
查询某一天是否签到
- 确定键名和偏移量:与记录签到时类似,根据用户ID确定键名,根据日期确定偏移量。
- 查询操作:使用Redis的
GETBIT
命令。例如在Python中:
import redis
r = redis.Redis(host='localhost', port=6379, db = 0)
# 假设用户ID为1,查询本月第5天是否签到
user_id = 1
day = 5
key = f"user:{user_id}:sign"
is_sign = r.getbit(key, day - 1)
if is_sign:
print("已签到")
else:
print("未签到")
统计一个月内总的签到天数
- 确定键名:同样是使用唯一标识用户的键名,如
user:{userId}:sign
。
- 统计操作:使用Redis的
BITCOUNT
命令。例如在Python中:
import redis
r = redis.Redis(host='localhost', port=6379, db = 0)
# 假设用户ID为1
user_id = 1
key = f"user:{user_id}:sign"
total_sign_days = r.bitcount(key)
print(f"该用户本月签到天数为: {total_sign_days}")