0

0

python中怎么操作redis消息队列

WBOY

WBOY

发布时间:2023-05-28 12:55:31

|

1925人浏览过

|

来源于亿速云

转载

redis 是一个 Key-Value 数据库,Value 支持 string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希类型)等类型。

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 的交互。

  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来作消息处理:

立即学习Python免费学习笔记(深入)”;

Synthesys
Synthesys

Synthesys是一家领先的AI虚拟媒体平台,用户只需点击几下鼠标就可以制作专业的AI画外音和AI视频

下载

简单说,redis支持两种消费模式,一种发布-订阅模式,及一个消息会被多个消费者处理(简单说类似是一个广播消息,所有人都会接收)。显然,在我的系统中不适用这种方法,相反地,系统需要采用队列模式,以便按照任务到达的先后顺序进行优先处理。那么对队列用什么类型得数据库结构来作呢?

先得聊聊list

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

类型图示如下: 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速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

7

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

22

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

17

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

17

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

9

2026.01.22

PHP特殊符号教程合集
PHP特殊符号教程合集

本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

9

2026.01.22

PHP探针相关教程合集
PHP探针相关教程合集

本专题整合了PHP探针相关教程,阅读专题下面的文章了解更多详细内容。

7

2026.01.22

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

27

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 14.1万人学习

Django 教程
Django 教程

共28课时 | 3.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号