‘’’
同步的redis
‘’’
import redis
import pandas as pd
redis_conn = redis.Redis(host='127.0.0.1',port=6379)
redis_conn.delete(*redis_conn.keys()) # 必须确保有keys
0.清除所有keys
for key in redis_conn.keys():
redis_conn.delete(key)
1.使用Hash(类似map)存储文章的 (ID、标题)数据:
for idx in range(101,106):
redis_conn.hset(name="BookShelf",key=str(idx),value=f"Book{idx} by scb")
展示所有文章列表
print("id ","title")
for article_id, article_title in redis_conn.hgetall("BookShelf").items():
print(article_id," ",article_title)# 默认返回bytes类型
print(article_id.decode(),article_title.decode())
print('#'*30)
展示单个文章的标题
print(redis_conn.hget("BookShelf",104))
2.使用String存储每个文章的访问次数,可以每次加1计数(或者存储文章ID的标签、作者等附加属性都可以)
3.使用List存储每个用户的访问文章的历史,按顺序记录;
4.使用Set存储访问网站的所有用户ID的集合:
5.使用Sorted Set存储网站的热榜,排序分数就是权重
def user_visit(uid:str,*article_ids):
for article_id in article_ids:
redis_conn.incr(name=f"article_counter_{article_id}") # string结构访问次数+1
redis_conn.lpush(f"user_history_{uid}",str(article_id)) # list结构加入阅读列表
redis_conn.sadd(f"all_visits_user",uid) # set结构,记录uid的全站集合
redis_conn.zincrby("article_hots",1,str(article_id)) # sortedset结构,文章热度+1
user_visit("epicmo",101,102)
user_visit("wisdomgo",103,105,101)
print(redis_conn.get("article_counter_103"))
print(redis_conn.get("article_counter_101"))
### 展示list
print(redis_conn.lrange("user_history_wisdomgo",0,-1))
### 展示set
print(redis_conn.smembers("all_visits_user"))
### 展示sortedset
print(redis_conn.zrange("article_hots",0,-1,withscores=True,desc=True))
0 评论:
发表评论