python使用redis模块来跟redis实现交互
更新时间:2022年6月30日 16:42 点击:267 作者:Python 学习者
redis模块的使用
1.安装模块
pip3 install redis
2.导入模块
import redis
3.连接方式
- 严格连接模式:r=redis.StrictRedis(host=“”,port=)
- 更Python化的连接模式:r=redis.Redis(host=“”,port=)
- StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令
- Redis与StrictRedis的区别是:Redis是StrictRedis的子类,用于向前兼容旧版本的redis-py,并且这个连接方式是更加"python化"的
4.连接池
为了节省资源,减少多次连接损耗,连接池的作用相当于总揽多个客户端与服务端的连接,当新客户端需要连接时,只需要到连接池获取一个连接即可,实际上只是一个连接共享给多个客户端。
import redis pool= redis.ConnectionPool(host='localhost',port=6379,decode_responses=True) r=redis.Redis(connection_pool=pool) r2=redis.Redis(connection_pool=pool) r.set('apple','a') print(r.get('apple')) r2.set('banana','b') print(r.get('banana')) print(r.client_list()) print(r2.client_list())#可以看出两个连接的id是一致的,说明是一个客户端连接
5.操作
- 值的设置和获取,可以参考redis的命令,redis模块中的对应功能的函数名基本与redis中的一致
- 注意默认情况下,设置的值或取得的值都为bytes类型,如果想改为str类型,需要在连接时添加上decode_responses=True】
- 设置值:
redis中set() ==>r.set() redis中setnx() ==>r.set() redis中setex() ==>r.setex() redis中setbit() ==>r.setbit() redis中mset() == > r.mset() redis中hset() ==>r.hset() redis中sadd() == >r.sadd() #其他。。。基本redis的命令名与redis模块中的函数名一致
获取:
redis中get() ==》r.get() redis中mget() ==》r.mget() redis中getset() ==》r.getset() redis中getrange() ==》r.getrange() #其他。。。基本redis的命令名与redis模块中的函数名一致
import redis r=redis.Redis(host='localhost',port=6379,decode_responses=True) # r=redis.StrictRedis(host='localhost',port=6379) r.set('key','value') value=r.get('key') # print(type(value)) print(value) r.hset('info','name','lilei') r.hset('info','age','18') print(r.hgetall('info')) r.sadd('course','math','english','chinese') print(r.smembers('course'))
管道
一般情况下,执行一条命令后必须等待结果才能输入下一次命令,管道用于在一次请求中执行多个命令。
参数介绍:
transaction:指示是否所有的命令应该以原子方式执行。
import redis,time r=redis.Redis(host="localhost",port=6379,decode_responses=True) pipe=r.pipeline(transaction=True) pipe.set('p1','v2') pipe.set('p2','v3') pipe.set('p3','v4') time.sleep(5) pipe.execute()
事务
python中可以使用管道来代替事务:
补充:监视watch:pipe.watch()
import redis,time import redis.exceptions r=redis.Redis(host='localhost',port=6379,decode_responses=True) pipe=r.pipeline() print(r.get('a')) try: # pipe.watch('a') pipe.multi() pipe.set('here', 'there') pipe.set('here1', 'there1') pipe.set('here2', 'there2') time.sleep(5) pipe.execute() except redis.exceptions.WatchError as e: print("Error")
订阅\发布
发布方:
import redis r=redis.Redis(host="localhost",port=6379,decode_responses=True) #发布使用publish(self, channel, message):Publish ``message`` on ``channel``. Flag=True while Flag: msg=input("主播请讲话>>:") if len(msg)==0: continue elif msg=='quit': break else: r.publish('cctv0',msg)
订阅方:
当订阅成功后,第一次接收返回的第一个消息是一个订阅确认消息:
import redis r=redis.Redis(host="localhost",port=6379,decode_responses=True) #发布使用publish(self, channel, message):Publish ``message`` on ``channel``. Flag=True chan=r.pubsub()#返回一个发布/订阅对象 msg_reciver=chan.subscribe('cctv0')#订阅 msg=chan.parse_response()#第一次会返回订阅确认信息 print(msg) print("订阅成功,开始接收------") while Flag: msg=chan.parse_response()#接收消息 print(">>:",msg[2])#此处的信息格式['消息类型', '频道', '消息'],所以使用[2]来获取
到此这篇关于python使用redis模块来跟redis实现交互的文章就介绍到这了,更多相关python redis交互内容请搜索猪先飞以前的文章或继续浏览下面的相关文章希望大家以后多多支持猪先飞!
原文出处:https://blog.csdn.net/sinat_38682860/article/details/1254445
相关文章
- 这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试...2022-02-14
- 在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
python-for x in range的用法(注意要点、细节)
这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-10- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 最近做一个小项目不可避免的需要前端脚本与后台进行交互。由于是在asp.net中实现,故问题演化成asp.net中jiavascript与后台c#如何进行交互。...2020-06-25
- 这篇文章主要介绍了python如何实现b站直播自动发送弹幕,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-02-20
- 这篇文章主要介绍了Redis连接池配置及初始化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
- 这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
python Matplotlib基础--如何添加文本和标注
这篇文章主要介绍了python Matplotlib基础--如何添加文本和标注,帮助大家更好的利用Matplotlib绘制图表,感兴趣的朋友可以了解下...2021-01-26- 这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
- 今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
详解redis desktop manager安装及连接方式
这篇文章主要介绍了redis desktop manager安装及连接方式,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-15- 这篇文章主要为大家详细介绍了python实现双色球随机选号,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-05-02
- 在本篇文章里小编给大家整理的是一篇关于python中使用np.delete()的实例方法,对此有兴趣的朋友们可以学习参考下。...2021-02-01
- 这篇文章主要介绍了使用Python的pencolor函数实现渐变色功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-03-09
- 这篇文章主要介绍了python自动化办公操作PPT的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-05
Python getsizeof()和getsize()区分详解
这篇文章主要介绍了Python getsizeof()和getsize()区分详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-20