python 消息队列 get是从队首还是队尾取东西_从零开始Python对redis作为消息队列的使用...
一、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作为消息队列的使用...相关推荐
- python 消息队列 get是从队首还是队尾取东西_python分布式爬虫中消息队列知识点详解...
当排队等待人数过多的时候,我们需要设置一个等待区防止秩序混乱,同时再有新来的想要排队也可以呆在这个地方.那么在python分布式爬虫中,消息队列就相当于这样的一个区域,爬虫要进入这个区域找寻自己想要的 ...
- python 消息队列 get是从队首还是队尾取东西_Python -- queue队列模块
import Queue myqueue = Queue.Queue(maxsize = 10) Queue.Queue类即是一个队列的同步实现.队列长度可为无限或者有限.可通过Queue的构造函数的 ...
- 操作系统实验二——时间片轮转调度算法(RR算法)(新进程放队首和队尾两种C++实现)
情况介绍 基本原理 系统将所有就绪进程按照FCFS的原则,排成一个队列依次调度. 把CPU分配给队首进程,执行一个时间片(10-100ms). 时间片用完后,系统计时器发出时钟中断,该进程将被剥夺CP ...
- python从0开始学编程第四天第3讲_从零开始学习PYTHON3讲义(四)让程序更友好
<从零开始PYTHON3>第四讲 先看看上一讲的练习答案. 程序完成的是功能,功能来自于"程序需求"("需求"这个词忘记了什么意思的去复习一下第二讲 ...
- python创建一个字典、关键字为只包含字母的字符串_探究Python源码,终于弄懂了字符串驻留技术...
摘要:在本文中,我们将深入研究 Python 的内部实现,并了解 Python 如何使用一种名为字符串驻留(String Interning)的技术,实现解释器的高性能. 每种编程语言为了表现出色,并 ...
- 关于python语言数值操作符、以下选项错误的是 答案是_关于Python注释,以下选项中描述错误的是...
[多选题]Python中单下划线_foo与双下划线__foo与__foo__的成员,下列说法正确的是? [单选题]关于Python语言的注释,以下选项中描述错误的是 [单选题]下面代码的输出结果是 s ...
- 关于python语言数值操作符、以下选项错误的是 答案是_关于Python语言数值操作符,以下选项中描述错误的是...
[单选题]关于Python的列表,以下选项中描述错误的是 [单选题]给定字典d,以下选项中对d.values()的描述正确的是 [单选题]下面代码的输出结果是 sum = 0 for i in ran ...
- python两个list取交集_使用 Python 获取两个列表的交集、并集、差集的常用方法 | Jin''''s Blog...
在数据处理中经常需要使用 Python 来获取两个列表的交集,并集和差集.在 Python 中实现的方法有很多,我平时只使用一两种我所熟悉的,但效率不一定最高,也不一定最优美,所以这次想把常用的方法都 ...
- python爬取拉勾网_(转)python爬取拉勾网信息
学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...
最新文章
- html5g与h5的区别,H5是什么?
- 自定义通配器导入bean对象
- 计算机应用能力考试用书有哪些,全国专业技术人员计算机应用能力考试用书
- (6)Zynq AXI_HP接口介绍
- 启动级别:init 0,1,2,3,4,5,6
- python绘制动态条形图_Python 绘图与可视化 matplotlib 动态条形图 bar
- Atitit 遗留系统的改造 微创技术 attilax总结 目录 1. 微创是高科技带来的革命!	1 1.1. 早期微创	1 1.2. 微创五大优点	1 2. 常用辅助设备与模块	2 2.1. 清晰
- 关于下载excel 解析文件名乱码
- 苹果说全是假的,市面不存在原装贴膜
- android支持wifi11ad,WiFi“千兆”必杀,802.11ax/802.11ad标准探秘
- 刘宇凡:坚持就是写文章的最大技巧
- 以“掌上东航”为例,论混合开发在企业级项目中的实践
- Android-GIF图片显示
- Conflux TokenGazer AMA活动内容回顾
- .net后台判断服务器(http/https开头)图片是否存在
- 新闻推荐系统:基于内容的推荐算法——TFIDF、衰减机制(github java代码)
- 《如果……》拉迪亚德·吉卜林
- 基于快照实现远程数据只读复制
- rp魔兽那个服务器人最多,魔兽世界怀旧服rp服务器什么意思 魔兽世界怀旧服rp是什么意思...
- 安卓毕业设计app项目基于Uniapp+SSM实现的安卓的掌上校园系统食堂缴费图书馆预约
热门文章
- 新手必须掌握的学车技巧-上坡起步
- 中国历史上影响最大的10首诗
- 国内手机产业混乱:产业一窝蜂 企业捞快钱
- 15条常用的视频音频编辑脚本命令(mencoder/ffmpeg等)
- 解决:Whitelabel Error Page This application has no explicit mapping for /error...UnknownHostException
- java.sql.SQLException: 无法转换为内部表示之解决
- Ubuntu安装LNMP
- 不作35岁的程序员?
- Jmeter逻辑控制器-ForEach Controller
- nginx-exporter安装使用