组件--redis基本操作

为什么用redis:https://www.cnblogs.com/linianhui/p/what-problem-does-redis-solve.html
redis 占用CPU过高怎么解决:https://blog.youkuaiyun.com/comeonyangzi/article/details/79274035
python调用:
redis_test.py
记录基础操作及发布订阅

#coding:utf-8
redis_host = '10.235.97.220'
redis_port = 6378
import redis, uuid,copy,threading

class redis_demo(object):
    def __init__(self,**config):
        cig = copy.deepcopy(config)
        self.config = {}
        for k in config:
            if config.get('redis_port') or config.get('redis_host'):
                raise ValueError('redis_host or redis_host is null' )
            self.config[k] = cig.pop(k)
        self.connect_redis()
        self.lock = threading.Lock()
    def connect_redis(self):
        pool = redis.ConnectionPool(**self.config)
        self.r_redis = redis.Redis(connection_pool=pool)
    def producer(self,type=1):
        '''
        生产数据类型
        '''
        self.r_redis.set(str(uuid.uuid1()),'test')
    def public(self,pub=None,msg=None):
        '''
            发布订阅
        '''
        self.lock.acquire()
        #channel 通道机订阅名称
        self. p = self.r_redis.publish(pub,msg)
        self.lock.release()
    def subscribe(self,sub=None):
        pub = self.r_redis.pubsub()
        pub.subscribe(sub)
        pub.parse_response()
        return pub
    def __del__(self):
        pass

# redis_demo(host=redis_host,port=redis_port,db=0)



'''
name:设置名称
value:设置值
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行
xx,如果设置为True,则只有name存在时,当前set操作才执行
'''
#---------string格式
# r_redis.set(str(uuid.uuid1()),'test')
# r_redis.expire('qml_session',30)#制定某个key的过期时间
# print(r_redis.type('sms_code'))#获取某个key的数据类型 有hash  string
# print(r_redis.keys('*6c7c*'))#模糊匹配key
#---------List格式  Left、right都可插入元素
'''
Lpush——先进后出,在列表头部插入元素
Rpush——先进先出,在列表的尾部插入元素
Lrange——出栈,根据索引,获取列表元素
Lpop——左边出栈,获取列表的第一个元素
Rpop——右边出栈,获取列表的最后一个元素
Lindex——根据索引,取出元素
Llen——链表长度,元素个数
Lrem——根据key,删除n个value
Ltrim——根据索引,删除指定元素
Rpoplpush——出栈,入栈
Lset——根据index,设置value
Linsert before——根据value,在之前插入值
Linsert after——根据value,在之后插入值
'''
# #先进先出后出示
# [r_redis.lpush('lpush',x) for x in range(10)]
# print(r_redis.lrange("lpush", 0, -1))#先进后出  左边出栈
# print(r_redis.lpop('lpush')) #左边出栈,获取列表的第一个元素
# #先进先出
# [r_redis.rpush('rpush',x) for x in range(10)]#先进先出  左边出栈
# print(r_redis.lrange("rpush", 0, -1))#先进后出  左边出栈
# print(r_redis.rpop('lpush')) #右边出栈,获取列表的最后一个元素
#
# # print(r_redis.keys())#获取db=0下的所有key
# print(r_redis.flushall())#清空所有数据库里面的数据
# # print(r_redis.flushdb()) #只清空当前数据库里面的数据,连接时指定的数据库:db=10

# print(r_redis)
# print(r_redis.__dict__)

server.py
发布消息

#coding:utf-8
from apiAuto.working.redis.redis_test import  redis_demo
import logging
from apiAuto.utils.logger import Logger
import time
redis_host = '10.235.97.220'
redis_port = 6378
#public
class public:
    def __init__(self):
        self.r = redis_demo(host=redis_host,port=redis_port,db=0)
        self.c = 0
    def producer(self):
        while self.c < 100:
            self.r.public(pub='test',msg = str(self.c))
            self.c += 1
            time.sleep(5)
            Logger.info('生产第 {} 次'.format(str(self.c)))
public().producer()

sub.py
订阅消息

#coding:utf-8
from  apiAuto.working.redis.redis_test import redis_demo
redis_host = '10.235.97.220'
redis_port = 6378
class sub_custom:
    def __init__(self):
        self.r = redis_demo(host=redis_host,port=redis_port,db=0)
        self.c = 0
    def custom(self):
        self.pub = self.r.subscribe('test')
        while self.c < 2  :
            print(self.pub.parse_response())
            self.c += 1
        print(self.pub.punsubscribe())
        self.pub.unsubscribe('test')#取消订阅

sub_custom().custom()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值