Redis限流实践:实现用户消息推送每天最多通知2次的功能
import redis
import time
import random
# 连接Redis
redis_client = redis.StrictRedis(host='localhost', port=6379, db=0)
# 用户ID
user_id = 'user123'
# 用户每日最大通知次数
max_notifications_per_day = 2
# 格式化当天日期
today = time.strftime('%Y-%m-%d')
# 生成随机通知ID
notification_id = str(random.randint(1, 1000000))
# 通知键
notification_key = f'notification:{user_id}:{notification_id}'
# 当天通知次数键
daily_count_key = f'daily_notification_count:{user_id}:{today}'
# 设置通知内容和过期时间
redis_client.set(notification_key, 'Notification message', ex=3600) # 过期时间设置为1小时
# 增加今天的通知次数并检查是否超过限制
current_count = redis_client.incr(daily_count_key)
if current_count > max_notifications_per_day:
print("超过每日通知次数限制")
# 如果超过限制,可以选择删除通知或进行其他处理
# redis_client.delete(notification_key)
else:
print("通知发送成功")
# 如果没有超过限制,可以执行发送通知的逻辑
# send_notification(notification_key)
# 注意:这里的send_notification是假设的函数,用于发送通知,实际应用中需要替换为实际的通知发送逻辑。
这段代码演示了如何使用Redis来实现一个用户每日最多收到通知次数的限制。首先,我们连接到Redis,然后根据用户ID和当前日期构造每日通知次数的键。通过Redis的INCR
命令来增加通知次数,并检查是否超过了设定的最大通知次数。如果没有超过限制,可以继续执行发送通知的逻辑;如果超过了限制,可以选择停止发送通知或者采取其他措施。
评论已关闭