千家信息网

Python中怎样操作Redis库

发表于:2024-12-05 作者:千家信息网编辑
千家信息网最后更新 2024年12月05日,今天就跟大家聊聊有关Python中怎样操作Redis库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Redis库在互联网应用的非常普遍,常常作
千家信息网最后更新 2024年12月05日Python中怎样操作Redis库

今天就跟大家聊聊有关Python中怎样操作Redis库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

Redis库在互联网应用的非常普遍,常常作为"缓存层"存在,因为相比MySQL来说它要快非常多,Redis是可以作为应用的唯一数据存储库而不需要MySQL的,但如果搭配MySQL使用,因为性能比MySQL快它常常作为Web应用服务的缓存层,使用时先访问Redis,访问不到再访问MySQL,同时更新到Redis(下次就能访问到这个缓存了)。

Redis主要支持5种数据结构:String: 字符串、Hash: 散列、List: 列表、Set: 集合、Sorted Set: 有序集合,个人非常喜欢Redis就是因为这些数据结构跟Python编程语言的数据容器真的好相似。

接下来我就用一个真实的文章网站怎样使用Redis做下代码演示,总结下各种数据结构的用法:

  1. 使用Hash存储文章的(ID、标题)数据;

  2. 使用String存储每个文章的访问次数,可以每次加1计数;

  3. 使用List存储每个用户的访问文章的历史,按顺序记录;

  4. 使用Set存储访问网站的所有用户ID的集合;

  5. 使用Sorted Set存储网站的热榜,排序分数就是权重;

引入redis包

如果没有的话,可以用pip install redis安装。

import redis
# 创建链接redis_conn = redis.Redis( host='192.168.0.119', port=6379)

1. 给网站新增几篇文章

# 使用hash,类似map的形式# 存储(Id、标题)数据for idx in range(101, 106):    title = f"this is {idx} article title"    redis_conn.hset(      "articles",        str(idx),        title )

2. 给用户展示文章列表

# 存储在hash,用hgetall展示所有的文章列表articles = redis_conn.hgetall("articles")for id, title in articles.items():    # 默认返回bytes类型    print(id, title)

看下结果吧:

101 this is 101 article title102 this is 102 article title103 this is 103 article title104 this is 104 article title105 this is 105 article title

也可以查看单个文章:

# 展示单个文章的标题redis_conn.hget("articles", "105")

结果为:

b'this is 105 article title'

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

# 这个函数用到了好多个数据结构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")

4. 查询文章的访问次数

因为存储在String结构,直接get即可

redis_conn.get(f"article_counter_104")返回:2
redis_conn.get(f"article_counter_105")返回:1

5. 展示一个用户的访问历史

因为存储在List,可以用lrange分页查询

redis_conn.lrange(  "user_visit_uid_01", 0, -1)返回:[b'103', b'102', b'101']
redis_conn.lrange( "user_visit_uid_03", 0, -1)返回:[b'105', b'104', b'103']

6. 展示访问全站的用户集合

因为存储在Set,可以用smembers取出所有内容

redis_conn.smembers("all_visit_uids")返回:{b'uid_01', b'uid_02', b'uid_03'}

7. 展示文章热榜以及热度

redis_conn.zrange(    "article_hots",      0, -1,      withscores=True,      desc=True)     返回如下,其实就是每个文章ID和热度值:[(b'103', 3.0), (b'104', 2.0), (b'102', 2.0), (b'105', 1.0), (b'101', 1.0)]

以上就是我使用Python对Redis的操作的一个总结,其中string/list/set/hash大家用的会比较多sorted set用的比较少,但当你遇到热榜、带权重列表等场景时用sorted set会很方便。

代码在github:

https://github.com/peiss/ant-learn-python

看完上述内容,你们对Python中怎样操作Redis库有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

文章 存储 结构 数据 用户 内容 就是 数据结构 网站 标题 次数 热度 缓存 应用 代码 全站 单个 历史 权重 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 sw2019无法安装服务器 金华招软件开发工程师 数据库网络使用权方案 在数据库的操作主要内容包括检索 高星级酒店销售与网络技术 宝山区电商数据库系统研发收购价 数据库2008无法读取修复 无线网络技术都有哪些 上海工业网络技术欢迎选购 梦想世界手游哪个服务器好 服务器怎么重新给权限 sql pl连接数据库 网络安全宣传周校园日活动举办 淄博dell服务器批发 年度网络安全建设整改计划 河南高科技软件开发科技 中兴系统集成软件开发 如何找网站的服务器 rfpa模拟软件开发 中型企业网络安全需求分析 华科与武大的网络安全 戴尔服务器进入u盘快捷键 金华招软件开发工程师 固件软件开发 唐山酒店先创网络技术支持 阿里云数据库怎么登录 软件软件开发成本预算表 坦克世界南方服务器 长宁区节能软件开发产品介绍 软件开发人月对应多少人天
0