点赞功能redis实现
在实现点赞功能时,我们通常需要考虑点赞者无法重复点赞,以及需要记录每个用户的点赞数量。以下是使用Redis实现点赞功能的一个简单示例:
import redis
# 连接Redis
r = redis.Redis(host='localhost', port=6379, db=0)
# 点赞
def like_post(user_id, post_id):
# 使用用户ID和帖子ID作为key,用于检查用户是否已点赞
like_key = f"like:{post_id}:{user_id}"
# 检查用户是否已点赞
if r.exists(like_key):
return False # 用户已点赞,返回False
# 用户未点赞,执行点赞操作
r.set(like_key, "1") # 设置点赞标识
r.incr(f"like_count:{post_id}") # 增加帖子的点赞数
return True # 点赞成功,返回True
# 取消点赞
def unlike_post(user_id, post_id):
like_key = f"like:{post_id}:{user_id}"
# 检查用户是否已点赞
if not r.exists(like_key):
return False # 用户未点赞,返回False
# 用户已点赞,执行取消点赞操作
r.delete(like_key) # 删除点赞标识
r.decr(f"like_count:{post_id}") # 减少帖子的点赞数
return True # 取消点赞成功,返回True
# 检查用户是否点赞
def is_liked(user_id, post_id):
like_key = f"like:{post_id}:{user_id}"
return r.exists(like_key) # 返回用户是否点赞的布尔值
# 获取帖子的点赞数
def get_like_count(post_id):
return r.get(f"like_count:{post_id}") or 0 # 返回点赞数,如果不存在则默认为0
在这个示例中,我们使用了Redis的SET
数据结构来记录每个用户是否对帖子进行了点赞,使用INCR
和DECR
命令来增加或减少点赞数。每个帖子的点赞数通过like_count:{post_id}
来记录。这样的实现方式确保了每个用户只能点赞一次,且点赞数量正确地增加或减少。
评论已关闭