Redis(一)

redis下载地址:http://redis.io/

import redis
redis_conn = redis.Redis(host='127.0.0.1', port=6379)
for key in redis_conn.keys():
redis_conn.delete(key)

使用hash,类似map的形式,存储(Id,标题)数据

for idx in range(101, 106):
redis_conn.hset("articles", str(idx), f"this is {idx} article title")

展示所有的文章列表

for article_id, article_title in redis_conn.hgetall("articles").items():
print(article_id, article_title)
print(article_id.decode("utf-8"), article_title.decode("utf-8"))

展示单个文章的标题

redis_conn.hget("articles", "105").decode("utf-8")

用户访问文章则产生行为记录

def user_visit(uid, article_id):
"""
产生了行为:uid访问了article_id
"""
# 1. String结构,文章的访问次数加1
redis_conn.incr(f"article_counter_{article_id}")
# 2. List结构,记录uid的访问列表
redis_conn.lpush(f"user_visit_{uid}", str(article_id))
# 3. Set结构,记录uid的全站集合
redis_conn.sadd(f"all_visit_uids", str(uid))
# 4. SortedSet结构,文章的热度加1
redis_conn.zincrby("article_hots", 1, str(article_id))

模拟3个用户的访问记录

user_visit("uid_01", "101")
user_visit("uid_01", "102")
user_visit("uid_01", "103")

user_visit("uid_02", "102")
user_visit("uid_02", "103")
user_visit("uid_02", "104")

user_visit("uid_03", "103")
user_visit("uid_03", "104")
user_visit("uid_03", "105")

查询文章的访问次数

redis_conn.get(f"article_counter_104").decode('utf-8')
redis_conn.get(f"article_counter_105").decode('utf-8')

展示一个用户的访问历史

redis_conn.lrange("user_visit_uid_01", 0, -1)
redis_conn.lrange("user_visit_uid_03", 0, -1)

展示访问全站的用户集合

redis_conn.smembers("all_visit_uids")

展示文章热榜以及热度

redis_conn.zrange("article_hots", 0, -1, withscores=True, desc=True)

posted @   星空28  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示