Python分享之redis(3)

3、List 操作

redis中的List在在内存中按照一个name对应一个List来存储

lpush(name,values)

# 在name对应的list中添加元素,每个新的元素都添加到列表的最左边
r.lpush("list_name",2)
r.lpush("list_name",3,4,5)#保存在列表中的顺序为5,4,3,2

rpush(name,values)

#同lpush,但每个新的元素都添加到列表的最右边

lpushx(name,value)

#在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边

rpushx(name,value)

#在name对应的list中添加元素,只有name已经存在时,值添加到列表的最右边

llen(name)

# name对应的list元素的个数
print(r.llen("list_name"))linsert(name, where, refvalue, value))# 在name对应的列表的某一个值前或后插入一个新值
r.linsert("list_name","BEFORE","2","SS")#在列表内找到第一个元素2,在它前面插入SS'''参数:name: redis的namewhere: BEFORE(前)或AFTER(后)refvalue: 列表内的值value: 要插入的数据'''r.lset(name, index, value)#对list中的某一个索引位置重新赋值
r.lset("list_name",0,"bbb")r.lrem(name, value, num)#删除name对应的list中的指定值
r.lrem("list_name","SS",num=0)''' 参数:name:  redis的namevalue: 要删除的值num:   num=0 删除列表中所有的指定值;num=2 从前到后,删除2个;num=-2 从后向前,删除2个'''lpop(name)#移除列表的左侧第一个元素,返回值则是第一个元素
print(r.lpop("list_name"))lindex(name, index)#根据索引获取列表内元素
print(r.lindex("list_name",1))lrange(name, start, end)#分片获取元素
print(r.lrange("list_name",0,-1))ltrim(name, start, end)#移除列表内没有在该索引之内的值
r.ltrim("list_name",0,2)rpoplpush(src, dst)# 从一个列表取出最右边的元素,同时将其添加至另一个列表的最左边
#src 要取数据的列表
#dst 要添加数据的列表brpoplpush(src, dst, timeout=0)#同rpoplpush,多了个timeout, timeout:取数据的列表没元素后的阻塞时间,0为一直阻塞
r.brpoplpush("list_name","list_name1",timeout=0)blpop(keys, timeout)#将多个列表排列,按照从左到右去移除各个列表内的元素
r.lpush("list_name",3,4,5)
r.lpush("list_name1",3,4,5)while True:print(r.blpop(["list_name","list_name1"],timeout=0))print(r.lrange("list_name",0,-1),r.lrange("list_name1",0,-1))'''keys: redis的name的集合timeout: 超时时间,获取完所有列表的元素之后,阻塞等待列表内有数据的时间(秒), 0 表示永远阻塞'''r.brpop(keys, timeout)#同blpop,将多个列表排列,按照从右像左去移除各个列表内的元素

4、Set 操作

Set集合就是不允许重复的列表

sadd(name,values)

#给name对应的集合中添加元素
r.sadd("set_name","aa")
r.sadd("set_name","aa","bb")

smembers(name)

#获取name对应的集合的所有成员

scard(name)

#获取name对应的集合中的元素个数
r.scard("set_name")

sdiff(keys, *args)

#在第一个name对应的集合中且不在其他name对应的集合的元素集合
r.sadd("set_name","aa","bb")
r.sadd("set_name1","bb","cc")
r.sadd("set_name2","bb","cc","dd")print(r.sdiff("set_name","set_name1","set_name2"))#输出:{aa}

sdiffstore(dest, keys, *args)

#相当于把sdiff获取的值加入到dest对应的集合中

sinter(keys, *args)

# 获取多个name对应集合的并集
r.sadd("set_name","aa","bb")
r.sadd("set_name1","bb","cc")
r.sadd("set_name2","bb","cc","dd")print(r.sinter("set_name","set_name1","set_name2"))#输出:{bb}

sinterstore(dest, keys, *args)

#获取多个name对应集合的并集,再讲其加入到dest对应的集合中

sismember(name, value)

#检查value是否是name对应的集合内的元素

smove(src, dst, value)

#将某个元素从一个集合中移动到另外一个集合

spop(name)

#从集合的右侧移除一个元素,并将其返回

srandmember(name, numbers)

# 从name对应的集合中随机获取numbers个元素
print(r.srandmember("set_name2",2))

srem(name, values)

#删除name对应的集合中的某些值
print(r.srem("set_name2","bb","dd"))

sunion(keys, *args)

#获取多个name对应的集合的并集
r.sunion("set_name","set_name1","set_name2")

sunionstore(dest,keys, *args)

#获取多个name对应的集合的并集,并将结果保存到dest对应的集合中

有序集合:

在集合的基础上,为每元素排序,元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值,即:值和分数,分数专门用来做排序。

zadd(name, *args, **kwargs)

# 在name对应的有序集合中添加元素
r.zadd("zset_name", "a1", 6, "a2", 2,"a3",5)
#或
r.zadd('zset_name1', b1=10, b2=5)

zcard(name)

#获取有序集合内元素的数量

zcount(name, min, max)

#获取有序集合中分数在[min,max]之间的个数
print(r.zcount("zset_name",1,5))

zincrby(name, value, amount)

#自增有序集合内value对应的分数
r.zincrby("zset_name","a1",amount=2)#自增zset_name对应的有序集合里a1对应的分数

zrange( name, start, end, desc=False, withscores=False, score_cast_func=float)

# 按照索引范围获取name对应的有序集合的元素
aa=r.zrange("zset_name",0,1,desc=False,withscores=True,score_cast_func=int)
print(aa)
'''参数:name    redis的namestart   有序集合索引起始位置end     有序集合索引结束位置desc    排序规则,默认按照分数从小到大排序withscores  是否获取元素的分数,默认只获取元素的值score_cast_func 对分数进行数据转换的函数'''zrevrange(name, start, end, withscores=False, score_cast_func=float)#同zrange,集合是从大到小排序的zrank(name, value)、zrevrank(name, value)#获取value值在name对应的有序集合中的排行位置(从0开始)
print(r.zrank("zset_name", "a2"))print(r.zrevrank("zset_name", "a2"))#从大到小排序zscore(name, value)#获取name对应有序集合中 value 对应的分数
print(r.zscore("zset_name","a1"))zrem(name, values)#删除name对应的有序集合中值是values的成员
r.zrem("zset_name","a1","a2")zremrangebyrank(name, min, max)#根据排行范围删除zremrangebyscore(name, min, max)#根据分数范围删除zinterstore(dest, keys, aggregate=None)r.zadd("zset_name", "a1", 6, "a2", 2,"a3",5)
r.zadd('zset_name1', a1=7,b1=10, b2=5)# 获取两个有序集合的交集并放入dest集合,如果遇到相同值不同分数,则按照aggregate进行操作
# aggregate的值为: SUM  MIN  MAX
r.zinterstore("zset_name2",("zset_name1","zset_name"),aggregate="MAX")
print(r.zscan("zset_name2"))zunionstore(dest, keys, aggregate=None)#获取两个有序集合的并集并放入dest集合,其他同zinterstore,其他常用操作delete(*names)#根据name删除redis中的任意数据类型exists(name)#检测redis的name是否存在keys(pattern='*')#根据* ?等通配符匹配获取redis的nameexpire(name ,time)# 为某个name设置超时时间rename(src, dst)# 重命名move(name, db))# 将redis的某个值移动到指定的db下randomkey()#随机获取一个redis的name(不删除)type(name)# 获取name对应值的类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【linux命令讲解大全】040. 文件操作:使用touch命令创建和更新文件

文章目录 touch补充说明语法选项参数示例 从零学 python touch 创建新的空文件或更新已存在文件的时间标签。 补充说明 touch命令具有两个功能: 更新已存在文件的时间标签为当前系统时间(默认方式),文件的数据保持不变。创建新…

Git结合Gitee的企业开发模拟

本系列有两篇文章: 一是另外一篇《快速使用Git完整开发》,主要说明了关于Git工具的基础使用,包含三板斧(git add、git commit、git push)、Git基本配置、版本回退、分支管理、公钥与私钥、远端仓库和远端分支、忽略文…

桌面端后台项目笔记

套用模板 vue-pure-admin 所用主要框架笔记 1. electron app const { app } require(electron) app.on(事件名, () > {} // 回调函数)常用事件 will-finish-launching 当应用程序完成基础的启动的时候触发ready:electron完成初始化时触发window-all-close…

基于深度学习的网络异常检测方法研究

摘要: 本文提出了一种基于深度学习的网络异常检测方法,旨在有效地识别网络中潜在的异常行为。通过利用深度学习算法,结合大规模网络流量数据的训练,我们实现了对复杂网络环境下的异常行为的准确检测与分类。实验结果表明&#xf…

css3有哪些新特性?(包含哪些模块)

css3有哪些新特性?包含哪些模块?以下是整理的21个css3新特性: 1.新增选择器 p:nth-child(n){color: rgba(255, 0, 0, 0.75)} 2.新增伪元素 ::before 和 ::after 3.弹性盒模型 display: flex; 4.多列布局 column-count: 5; 5.媒体查询 media (max-width:…

数据库约束

文章目录 1. 简介2. 代码演示3. 外键约束4. 外键删除和更新行为 1. 简介 概念:约束时作用于表中子段上的规则,用于限制存储在表中的shuju目的:保证数据库中数据的正确、有效性和完整性分类: 约束描述关键字非空约束限制该字段不…

什么是 TF-IDF 算法?

简单来说,向量空间模型就是希望把查询关键字和文档都表达成向量,然后利用向量之间的运算来进一步表达向量间的关系。比如,一个比较常用的运算就是计算查询关键字所对应的向量和文档所对应的向量之间的 “相关度”。 简单解释TF-IDF TF &…

【PHP】Swoole:一款强大的PHP网络编程工具

在科学计算领域,Swoole是一款功能强大的PHP扩展,它提供了高性能的网络通信和异步编程功能。Swoole不仅支持TCP、UDP、Unix Socket和HTTP等通信协议,还具有异步并发处理能力,使得PHP开发者能够轻松地构建高性能的网络应用程序。 1…

逻辑回归算法学习笔记

逻辑回归算法介绍: 逻辑回归是一种常用的分类算法,用于将数据分为两个类别。与线性回归不同,逻辑回归使用的是逻辑函数(sigmoid函数)将线性输出转换为概率值,并根据概率进行分类。在本学习笔记中&#xff0…

蒲公英路由器如何设置远程打印?

现如今,打印机已经是企业日常办公中必不可少的设备,无论何时何地,总有需要用到打印的地方,包括资料文件、统计报表等等。 但若人在外地或分公司,有文件急需通过总部的打印机进行打印时,由于不在同一物理网络…

ceph对象三元素data、xattr、omap

这里有一个ceph的原则,就是所有存储的不管是块设备、对象存储、文件存储最后都转化成了底层的对象object,这个object包含3个元素data,xattr,omap。data是保存对象的数据,xattr是保存对象的扩展属性,每个对象…

cortex-A7核LED灯实验--STM32MP157

实验目的:实现LED1 / LED2 / LED3三盏灯工作 一,分析电路图 1,思路 分析电路图可知: 网络编号 引脚编号 LED1 PE10 LED2 > PF10 LED3 > PE8 2,工作原理: 写1:LED灯亮&#xf…

Spring Cloud Alibaba-Sentinel规则

1 流控规则 流量控制,其原理是监控应用流量的QPS(每秒查询率) 或并发线程数等指标,当达到指定的阈值时 对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。 第1步: 点击簇点链路,我们就可以看到访…

linux shell函数和返回值

shell函数可以有返回值,但是只能返回0-255作为状态值,不能返回字符串,字符串可以通过其他方式传递给调用者 1.shell函数的return 小于255的值 ~/Desktop$ cat b.sh getLastSize() { size2 return $size }getLastSize lastSize$? echo &qu…

提升系统管理:监控和可观察性在DevOps中的作用

在不断发展的DevOps世界中,深入了解系统行为、诊断问题和提高整体性能的能力是首要任务之一。监控和可观察性是促进这一过程的两个关键概念,为系统的健康和性能提供了宝贵的可见性。虽然这些术语经常可以互换使用,但它们代表着理解和管理复杂…

一篇文章带你了解-selenium工作原理详解

前言 Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome&#xff0c…

RK3562 VS RK3566 性能解析

RK3562是深圳触觉智能最新推出的一款高性能核心板及其开发套件,采用四核A53Mali G52架构,主频2GHz,内置1T NPU算力以及13M ISP,拥有丰富的外围接口。其次在解码方面,支持H.264 1080P60fps、H.265 4K30fps;编…

EMQX启用双向SSL/TLS安全连接以及java连接

作为基于现代密码学公钥算法的安全协议,TLS/SSL 能在计算机通讯网络上保证传输安全,EMQX 内置对 TLS/SSL 的支持,包括支持单/双向认证、X.509 证书、负载均衡 SSL 等多种安全认证。你可以为 EMQX 支持的所有协议启用 SSL/TLS,也可…

cocos 2.4 版本 设置物理引擎步长 解决帧数不一致的设备 物理表现不一致问题 设置帧刷新率

官网地址Cocos Creator 3.8 手册 - 2D 物理系统 官网好像写的不太对 下面是我自己运行好使的 PhysicsManager.openPhysicsSystem()var manager cc.director.getPhysicsManager();// 开启物理步长的设置manager.enabledAccumulator true;// cc.PhysicsManagercc.PhysicsManag…

Leetcode109. 有序链表转换二叉搜索树

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给定一个单链表的头节点 head ,其中的元素 按升序排序 ,将其转换为高度平衡的二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度…