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)

浙公网安备 33010602011771号