文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python操作redis的订阅发布功能

2023-01-31 02:36

关注

安装redis-server

yum -y install gcc gcc-c++    #安装编译工具

cd /opt

wget -c http://download.redis.io/releases/redis-3.0.5.tar.gz   #下载包

tar xf redis-3.0.5.tar.gz     #解压

cd redis-3.0.5

make MALLOC=libc  #编译

make PREFIX=/usr/local/redis install  #安装

echo 'PATH=/usr/local/redis/bin:$PATH' >> /etc/profile    #配置环境变量

source /etc/profile #或 . /etc/profile

mkdir /usr/local/redis/conf  #创建目录

cp /opt/redis-3.0.5/redis.conf /usr/local/redis/conf/   #拷贝配置文件

sed -i "46s#/var/run/redis.pid#/usr/local/redis/conf/redis.pid#" /usr/local/redis/conf/redis.conf

sed -i "192s#./#/usr/local/redis/conf/#" /usr/local/redis/conf/redis.conf

sed -i 509s/no/yes/ /usr/local/redis/conf/redis.conf

nohup redis-server /usr/local/redis/conf/redis.conf &> /dev/null &

echo vm.overcommit_memory = 1 >> /etc/sysctl.conf

sysctl -p

lsof -i:6379  #查看端口有没有起来


安装pip命令依赖包

wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz --no-check-certificate

cd setuptools-0.6c11

python setup.py build

python setup.py install


安装pip命令

wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificate

tar xf pip-1.5.4.tar.gz 

cd pip-1.5.4

python setup.py install


安装redis的Python api

pip install redis


测试

[root@test1 opt]# python

Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import redis

>>> r = redis.Redis(host='10.211.55.4', port=6379)

>>> r.set('foo', 'Bar')

>>> print r.get('foo')

"Bar"


[root@test1 opt]# redis-cli  

127.0.0.1:6379> get foo

"Bar"



redis订阅和发布功能演示

[root@test1 opt]# cat redishelper.py

#!/usr/bin/env python

#coding:utf-8


import redis


class RedisHelper:


    def __init__(self):

        self.__conn = redis.Redis(host='127.0.0.1')

        self.chan_sub = 'fm87.7'  #订阅频道

        self.chan_pub = 'fm87.7'  #接收频道


    def get(self,key):

        return self.__conn.get(key)


    def set(self,key,value):

        self.__conn.set(key,value)


    def public(self,msg):   #在chan_pub这个频道发布消息

        self.__conn.publish(self.chan_pub,msg)

        return True


    def subscribe(self):  #订阅接收

        pub = self.__conn.pubsub()  #打开收音机

        pub.subscribe(self.chan_sub)  #订阅频道

        pub.parse_response()   #等待消息

        return  pub  #开始接收


if __name__ == '__main__':

    t = RedisHelper()

    t.public('test') #发布了test这个消息



在一端执行脚本

python redishelper.py


另一端查看

>>> import redishelper

>>> r = redishelper.RedisHelper()

>>> r.subscribe()

<redis.client.PubSub object at 0x7f1789422950>

>>> recv = r.subscribe()

>>> recv.parse_response() 

['message', 'fm87.7', 'test']



订布发阅演示2

#在一个终端打开这个

>>> import redis                     

>>> r = redis.Redis(host='127.0.0.1')

>>> chan = r.pubsub()       #打开频道

>>> chan.subscribe("fm100") #调到该频道

>>> chan.parse_response()   #测试监听频道

['subscribe', 'fm100', 1L]

>>> chan.parse_response()   #再次执行成阻塞状态等待消息的到来


>>> while True:          #写成死循环

...  chan.parse_response() 



在另一个终端打开发布消息

>>> import redis

>>> p = redis.Redis(host='127.0.0.1')

>>> p.publish('fm100','Hellow World!!!')

1L


回到之前那终端发现已经出来消息

>>> while True:          

...  chan.parse_response() 

... 

['message', 'fm100', 'Hellow World!!!']


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯