资讯专栏INFORMATION COLUMN

python使用redis控制模块来和redis完成互动

89542767 / 418人阅读

  此篇文章主要是详细介绍了python使用redis控制模块来和redis完成互动,文章内容紧扣主题进行详尽的基本介绍,具有很强的实用价值,需用的朋友可以学习一下


  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.连接池


  为了节约网络资源,降低数次联接消耗,连接池的功效等同于总览好几个手机客户端与服务器端连接,当新手机客户端需用联接时,只必须到连接池获得1个联接就可以,事实上就是一个连接共享给好几个手机客户端。


  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]来获取


  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128725.html

相关文章

  • SegmentFault 助力 PyCon2014 China

    摘要:月日,助力在北京举办全球最盛大的年度聚会,国内外顶尖的工程师做了很精彩的分享和互动,现场多名爱好者参与了此次技术主题盛宴。后续会有更多现场照片持续更新 11月15日,SegmentFault 助力PyCon China 在北京举办全球 Pythoneer 最盛大的年度聚会,国内外顶尖的Python 工程师做了很精彩的分享和互动,现场300多名python爱好者参与了此次技术主题盛宴。 ...

    junbaor 评论0 收藏0
  • 宜信开源|数据库审核软件Themis部署攻略

    摘要:一介绍是宜信公司团队开发的一款数据库审核产品,可帮助开发人员快速发现数据库质量问题,提升工作效率。此平台可实现对数据库进行多维度对象结构文本执行计划及执行特征的审核,用以评估对象结构设计质量及运行效率。执行计划指数据库中的执行计划。 一、介绍 Themis是宜信公司DBA团队开发的一款数据库审核产品,可帮助DBA、开发人员快速发现数据库质量问题,提升工作效率。其名称源自希腊神话中的正义...

    fsmStudy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<