使用Python读写Redis——Zsets

这篇具有很好参考价值的文章主要介绍了使用Python读写Redis——Zsets。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前详细介绍了 Redis命令 - Zsets命令组常用命令,同样的命令,本文将用python调用redis库封装好的方法。

要操作的Zsets命令如下

1、ZADD key score member [score] [member]
2、ZRANGE key start stop [WITHSCORES]
3、ZCARD key
4、ZRANK key member
5、ZSCORE key member
6、ZCOUNT key min max
7、ZINCRBY key increment member
8、ZREVRANGE key start stop [WITHSCORES]
9、ZREVRANGEBYSCORE key max min [WITHSCORES]
10、ZREVRANK key member
11、ZREM key member [member …]文章来源地址https://www.toymoban.com/news/detail-817346.html

Python连接redis

import redis
from config.VAR import INT_REDIS_HOST, INT_REDIS_PORT, INT_REDIS_PASSWORD

# 便于修改,将redis的连接配置在VAR.py中,管理这些常量
r = redis.StrictRedis(host=INT_REDIS_HOST, port=INT_REDIS_PORT, password=INT_REDIS_PA

Python使用Zsets命令

zset = "myzset"
dict = {"a": 100, "b": 200, "c": 300}
# ZADD key score member [score] [member]
# 新创建一个zset,有3个成员,返回值为key-value的键值对个数
print(r.zadd(zset, dict))  # 3
# 成员已存在,且score也相同,返回0
print(r.zadd(zset, {"a": 100}))  # 0
# 成员已存在,更新score值,返回
print(r.zadd(zset, {"a": 400}))  # 0
# 成员不存在的时候添加新成员
print(r.zadd(zset, {"d": 500}, nx=True))  # 1

print(r.zadd(zset, {"e": 700}, xx=False))  # 1

# ZRANGE key start stop [WITHSCORES]
# case1: 带score
print(r.zrange(zset, 0, -1))  # [b'b', b'c', b'a', b'd', b'e']
# case2: 不带score
print(r.zrange(zset, 0, -1,
               withscores=True))  # [(b'b', 200.0), (b'c', 300.0), (b'a', 400.0), (b'd', 500.0), (b'e', 700.0)]

# ZCARD key
# 获取有序集合的成员数
# case1:key存在
print(r.zcard(zset))  # 5
# case2:key不存在, 返回0
print(r.zcard("myzset1"))  # 0

# ZRANK key member
# 返回有序集合中指定成员的索引(按照score排序后的, 且从0开始)
print(r.zrange(zset, 0, -1,
               withscores=True))  # [(b'b', 200.0), (b'c', 300.0), (b'a', 400.0), (b'd', 500.0), (b'e', 700.0)]
print("c: ", r.zrank(zset, "c"))  # 1
print("d: ", r.zrank(zset, "d"))  # 3
print("e: ", r.zrank(zset, "e"))  # 4

# ZSCORE key member
# 返回有序集中,成员的分数值
print(r.zscore(zset, "c"))  # 300.0

# ZCOUNT key min max
# 计算在有序集合中指定区间分数的成员数【min, max】闭区间
print(r.zcount(zset, 300, 500))  # 3

# ZINCRBY key increment member
# 有序集合中对指定成员的分数加上增量 increment
print(r.zincrby(zset, 100, "c"))  # 400.0

# ZREVRANGE key start stop [WITHSCORES]
# 返回有序集中指定区间内的成员,通过索引,分数从高到低
print(r.zrevrange(zset, 0, -1,
                  withscores=True))  # [(b'e', 700.0), (b'd', 500.0), (b'c', 400.0), (b'a', 400.0), (b'b', 200.0)]

# ZREVRANGEBYSCORE key max min [WITHSCORES]
# 返回有序集中指定分数区间内的成员,分数从高到低排序
print(r.zrevrangebyscore(zset, 600, 400, withscores=True))  # [(b'd', 500.0), (b'c', 400.0), (b'a', 400.0)]

# ZREVRANK key member
# 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
print(r.zrange(zset, 0, -1,
               withscores=True))  # [(b'b', 200.0), (b'a', 400.0), (b'c', 400.0), (b'd', 500.0), (b'e', 700.0)]
print("a: ", r.zrevrank(zset, "a"))  # 3
print("b: ", r.zrevrank(zset, "b"))  # 4
print("c: ", r.zrevrank(zset, "c"))  # 2
print("d: ", r.zrevrank(zset, "d"))  # 1
print("e: ", r.zrevrank(zset, "e"))  # 0

# ZREM key member [member …]
# 移除有序集合中的一个或多个成员
print(r.zrange(zset, 0, -1,
               withscores=True))  # [(b'b', 200.0), (b'a', 400.0), (b'c', 400.0), (b'd', 500.0), (b'e', 700.0)]
print(r.zrem(zset, *["a", "b"]))  # 2
print(r.zrange(zset, 0, -1, withscores=True))  # [(b'c', 400.0), (b'd', 500.0), (b'e', 700.0)]

到了这里,关于使用Python读写Redis——Zsets的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis - Python 客户端基本使用指南

    参考:python 模块Redis模块,连接Redis数据库 Python 中的 Redis 客户端库允许开发者与 Redis 数据库进行交互。这些库允许在 Python 中连接到 Redis、执行命令以读取或写入数据,并处理 Redis 数据。 以下是一些常见的 Python Redis 客户端库: redis 库:是 Python 中最常用的 Redis 客户端库之

    2024年02月08日
    浏览(45)
  • Redis 读写分离 使用redisTemplate执行lua脚本时,报错处理

    项目配置 redis架构 1主2从3哨兵模式 采用了读写分离模式 springboot使用 luttuce 项目使用redisTemplate执行lua脚本 测试代码 大致意思是说 在从节点上执行 写操作(实际上写操作是在lua脚本里面的) 为什么执行lua脚本会只走从节点? 在主从模式下,框架自身应该是可以区分读和写

    2024年02月17日
    浏览(50)
  • 使用 Python 获取 Redis 数据库中的所有键

    如果你了解 JSON,就会熟悉 Redis 设计系统。 它使用键值结构和分布式内存方法来实现弹性数据库。 哈希、列表、集合、排序集合、字符串、JSON 和流是 Redis 支持的众多数据结构之一。 这个开源数据库支持不同的语言,包括 Python,如果您正在使用它开发后端系统,一些模块和

    2024年02月12日
    浏览(33)
  • 使用Dockerfile构建python项目镜像(flask框架+redis+环境变量)

    有时候如连接redis的url可能发生变化等,这时候就需要把一些变量放在环境变量中。         使用 --env 和 -e 是一样效果的。 1.1.1 配置Dockerfile文件 1.1.2 编写python示例程序 示例代码: 1.1.3 构建镜像         首先将python代码和dockerfile文件上传到已经安装了docker的服务器

    2024年02月07日
    浏览(50)
  • 如何使用C#中的Lambda表达式操作Redis Hash结构,简化缓存中对象属性的读写操作

    Redis是一个开源的、高性能的、基于内存的键值数据库,它支持多种数据结构,如字符串、列表、集合、散列、有序集合等。其中,Redis的散列(Hash)结构是一个常用的结构,今天跟大家分享一个我的日常操作,如何使用Redis的散列(Hash)结构来缓存和查询对象的属性值,以

    2024年02月16日
    浏览(59)
  • 读写一致 && MySQL&&Redis

    不懂CPU如何读写内存还敢说自己是程序员? - 知乎 (zhihu.com)   1. 什么是cache line : cache line 位于 CPU 与内存之间,CPU想要获得数据的时候,先从CPU cache中获取。 若CPU cache中不存在,发生cache miss,那么,cache要从主存memory 中获取数据缓存到cache中并且返回给CPU。 由于局部性原理

    2024年02月11日
    浏览(34)
  • Redis三种缓存读写策略

    1.1 读 1.2 写   1.3 为什么要先更新db再删除cache?          缓存的写入速度是比数据库的写入速度快很多,因此相比于先删除cache后更新db带来数据不一致性问题的概率更小。 1.4 特点 平时使用比较多的一个缓存读写模式 同时维系db 和 cache,以db结果为准 首次请求数据一定不

    2024年01月19日
    浏览(61)
  • Python学习之路-Python操作redis

    在Python中操作 Redis 可以直接用 redis 模块 安装Redis的有3种方式https://github.com/andymccurdy/redis-py 第一种:进⼊虚拟环境py_django,联⽹安装包redis 第二种:进⼊虚拟环境py_django,联⽹安装包redis 第三种:到中⽂官⽹-客户端下载redis包的源码,使⽤源码安装: 下载:执行 wget https:/

    2024年01月22日
    浏览(43)
  • Redis 如何配置读写分离架构(主从复制)?

    如果你的 redis 实际应用场景是 读多写少 ,那么读写分离的架构就比较适合,能够显著的提升读的性能 实际上就是 Redis 对数据除持久化之外的一种数据冗余备份机制。(能够在主节点出现故障时,通过其他手段让从节点快速提升为主节点提供服务以实现故障的恢复。)在读

    2023年04月11日
    浏览(39)
  • node-red - 读写操作redis

    安装配置node-red环境: centos通过源文件的方式安装node-red nodered-环境搭建及使用 安装配置redis: centos - docker安装redis Windows10安装redis(图文教程) Redis支持的数据结构 回到目录 1.在node-red里面安装redis节点 : 2. 刷新node-red: 回到目录 3.1.1 List(列表)存储 :redis-out节点   redis

    2024年02月10日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包