一、Redis 服务

1、安装

yum install redis

2、 python安装支持模块

/opt/python2.7.13/bin/pip install redis

3、 和redis的简单直接交互

In [1]: import redis

In [2]: rc = redis.Redis(host='192.168.8.237',port=6379,decode_responses=True)

In [5]: rc.set('imoocc','jeson')

Out[5]: True

In [7]: rc.get('imoocc')

Out[7]: u'jeson'

二、Redis简单操作

对于和Redis的交互, Redis的类中提供了连接池的方式,我们可以通过连接池管理并操作Redis。

1、连接池建立,利用连接池连接

In [8]: connpool = redis.ConnectionPool(host='192.168.8.237',port=6379,decode_responses=True)

In [9]: rc = redis.Redis(connection_pool=connpool)

In [10]: rc.set('imooccp','1234566')

Out[10]: True

In [11]: rc.get('imooccp')

Out[11]: u'1234566'

2、redis中DB ,指定数据存取的DB

redis.conf中设置了db的数量,那么redis的数据库名也为0 到15,如下:

databases 16

指定使用那个数据库名,我们通过如下的方式,就可以了:

In [29]: connpool = redis.ConnectionPool(host='192.168.8.237',port=6379,decode_responses=True,db=3)

In [30]: rc.set('test2','lllll')

Out[30]: True

这样就将数据库写入到db3了,如何验证呢?我们从服务端来认证最直接,如下:

用redis-cli(redis自带的工具)登录服务端,查看写入的key。

127.0.0.1:6379> SELECT 3

OK

127.0.0.1:6379[3]> KEYS * //查看db 3这个库下所有的key

1) "imooccc"

那么 接下来介绍redis详细项目使用的内容,大家不要觉得介绍的内容扩散太大。

最近在作一个任务系统,任务写入是不定时的,我们需要用一个程序去定期消费这些任务,必须是有先后顺序的,而且是

前一个任务确认执行完后,才会去执行下一个。

怎么办呢?用队列啊,对吧!用什么队列,怎么用?

介绍下为什么要用redis来作消息处理:

简单说,redis支持两种消费模式,一种发布-订阅模式,及一个消息会被多个消费者处理(简单说类似是一个广播消息,所有人都会接收)。很明显我得系统中不需要这么用,系统里边就需要队列模式,及先到的任务优先处理。那么对队列用什么类型得数据库结构来作呢?

四、先得聊聊list

list 这个数据类型,在python里是一个列表,在redis里就是一个有序队列(或者说数据链表)了。

类型图示如下:

大家看了这个结构就可以清楚了,我们可以利用list的数据接口模式,设计从左端和右端都可以对list进元素的同向处理(满足队列的特性先到先出)。

1、从左端插入元素

In [10]: rc.lpush('tasklist',1,2,3)

Out[10]: 3L

打印输出内容,如下:

In [17]: print(rc.lrange('tasklist',0,2))

[u'3', u'2', u'1']

类似的从左测插入的方法还有lpushx(name,value),区别只有当name存在才将value插入到最左边。

2、从右边插入元素

In [21]: rc.rpush('tasklist','5')

Out[21]: 5L

In [22]: print(rc.lrange('tasklist',0,4))

[u'4', u'3', u'2', u'1', u'5']

3、从左边取出元素怎么取呢?

In [23]: rc.lpop("tasklist")

Out[23]: u'4'

In [24]: rc.lpop("tasklist")

Out[24]: u'3'

In [25]: print(rc.lrange('tasklist',0,4))

[u'2', u'1', u'5']

我们会看到从左侧已经取出了两个元素了。剩下来[u'2', u'1', u'5']

4、从右侧呢?

当然就是rc.rpop()了

python对于redis的基础使用和Redis作为队列的简单使用就介绍这些,

python的工程里边如何更好封装redis库的连接和方法,

及python很多的知识内容,大家可以关注我,我将提供更多的内容!

本文由 帝一博客 原创发布。用户在本站发布的原创内容(包括但不仅限于回答、文章和评论),著作权均归用户本人所有。独家文章转载,请联系邮箱:17762131@qq.com。获得授权后,须注明本文地址:

https://www.d1blog.com/pythonpachong/1121.html

python 消息队列 get是从队首还是队尾取东西_从零开始Python对redis作为消息队列的使用...相关推荐

  1. python 消息队列 get是从队首还是队尾取东西_python分布式爬虫中消息队列知识点详解...

    当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...

  2. python 消息队列 get是从队首还是队尾取东西_Python -- queue队列模块

    import Queue myqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限.可通过Queue的构造函数的 ...

  3. 操作系统实验二——时间片轮转调度算法(RR算法)(新进程放队首和队尾两种C++实现)

    情况介绍 基本原理 系统将所有就绪进程按照FCFS的原则,排成一个队列依次调度. 把CPU分配给队首进程,执行一个时间片(10-100ms). 时间片用完后,系统计时器发出时钟中断,该进程将被剥夺CP ...

  4. python从0开始学编程第四天第3讲_从零开始学习PYTHON3讲义(四)让程序更友好

    <从零开始PYTHON3>第四讲 先看看上一讲的练习答案. 程序完成的是功能,功能来自于"程序需求"("需求"这个词忘记了什么意思的去复习一下第二讲 ...

  5. python创建一个字典、关键字为只包含字母的字符串_探究Python源码,终于弄懂了字符串驻留技术...

    摘要:在本文中,我们将深入研究 Python 的内部实现,并了解 Python 如何使用一种名为字符串驻留(String Interning)的技术,实现解释器的高性能. 每种编程语言为了表现出色,并 ...

  6. 关于python语言数值操作符、以下选项错误的是 答案是_关于Python注释,以下选项中描述错误的是...

    [多选题]Python中单下划线_foo与双下划线__foo与__foo__的成员,下列说法正确的是? [单选题]关于Python语言的注释,以下选项中描述错误的是 [单选题]下面代码的输出结果是 s ...

  7. 关于python语言数值操作符、以下选项错误的是 答案是_关于Python语言数值操作符,以下选项中描述错误的是...

    [单选题]关于Python的列表,以下选项中描述错误的是 [单选题]给定字典d,以下选项中对d.values()的描述正确的是 [单选题]下面代码的输出结果是 sum = 0 for i in ran ...

  8. python两个list取交集_使用 Python 获取两个列表的交集、并集、差集的常用方法 | Jin''''s Blog...

    在数据处理中经常需要使用 Python 来获取两个列表的交集,并集和差集.在 Python 中实现的方法有很多,我平时只使用一两种我所熟悉的,但效率不一定最高,也不一定最优美,所以这次想把常用的方法都 ...

  9. python爬取拉勾网_(转)python爬取拉勾网信息

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...

最新文章

  1. html5g与h5的区别,H5是什么?
  2. 自定义通配器导入bean对象
  3. 计算机应用能力考试用书有哪些,全国专业技术人员计算机应用能力考试用书
  4. (6)Zynq AXI_HP接口介绍
  5. 启动级别:init 0,1,2,3,4,5,6
  6. python绘制动态条形图_Python 绘图与可视化 matplotlib 动态条形图 bar
  7. Atitit 遗留系统的改造 微创技术 attilax总结 目录 1. 微创是高科技带来的革命! 1 1.1. 早期微创 1 1.2. 微创五大优点 1 2. 常用辅助设备与模块 2 2.1. 清晰
  8. 关于下载excel 解析文件名乱码
  9. 苹果说全是假的,市面不存在原装贴膜
  10. android支持wifi11ad,WiFi“千兆”必杀,802.11ax/802.11ad标准探秘
  11. 刘宇凡:坚持就是写文章的最大技巧
  12. 以“掌上东航”为例,论混合开发在企业级项目中的实践
  13. Android-GIF图片显示
  14. Conflux TokenGazer AMA活动内容回顾
  15. .net后台判断服务器(http/https开头)图片是否存在
  16. 新闻推荐系统:基于内容的推荐算法——TFIDF、衰减机制(github java代码)
  17. 《如果……》拉迪亚德·吉卜林
  18. 基于快照实现远程数据只读复制
  19. rp魔兽那个服务器人最多,魔兽世界怀旧服rp服务器什么意思 魔兽世界怀旧服rp是什么意思...
  20. 安卓毕业设计app项目基于Uniapp+SSM实现的安卓的掌上校园系统食堂缴费图书馆预约

热门文章

  1. 新手必须掌握的学车技巧-上坡起步
  2. 中国历史上影响最大的10首诗
  3. 国内手机产业混乱:产业一窝蜂 企业捞快钱
  4. 15条常用的视频音频编辑脚本命令(mencoder/ffmpeg等)
  5. 解决:Whitelabel Error Page This application has no explicit mapping for /error...UnknownHostException
  6. java.sql.SQLException: 无法转换为内部表示之解决
  7. Ubuntu安装LNMP
  8. 不作35岁的程序员?
  9. Jmeter逻辑控制器-ForEach Controller
  10. nginx-exporter安装使用