博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
memcached & redis
阅读量:1860 次
发布时间:2019-04-26

本文共 2140 字,大约阅读时间需要 7 分钟。

参考

    以下例子在电脑上运行过,但是没有效果,暂时没有找到原因

管道:

    redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。

示例1

import redis pool = redis.ConnectionPool(host='10.211.55.4', port=6379) r = redis.Redis(connection_pool=pool) # pipe = r.pipeline(transaction=False)pipe = r.pipeline(transaction=True)pipe.multi()pipe.set('name', 'alex')pipe.set('role', 'sb') pipe.execute()

示例2

import redisconn = redis.Redis(host='192.168.1.41',port=6379)conn.set('count',1000)with conn.pipeline() as pipe:    # 先监视,自己的值没有被修改过    conn.watch('count')    # 事务开始    pipe.multi()    old_count = conn.get('count')    count = int(old_count)    if count > 0:  # 有库存        pipe.set('count', count - 1)    # 执行,把所有命令一次性推送过去    pipe.execute()

Dashboad和数据处理

 
monitor_redis.py
import redisclass RedisHelper:    def __init__(self):        self.__conn = redis.Redis(host='10.211.55.4')        self.chan_sub = 'fm104.5'        self.chan_pub = 'fm104.5'    def public(self, msg):        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

consumer.py

from monitor_redis import RedisHelper obj = RedisHelper()redis_sub = obj.subscribe() while True:    msg= redis_sub.parse_response()    print (msg)

producer.py

from monitor_redis import RedisHelper obj = RedisHelper()obj.public('hello')

sentinel

redis重的sentinel主要用于在redis主从复制中,如果master顾上,则自动将slave替换成master

from redis.sentinel import Sentinel # 连接哨兵服务器(主机名也可以用域名)sentinel = Sentinel([('10.211.55.20', 26379),                     ('10.211.55.20', 26380),                     ],                    socket_timeout=0.5) # # 获取主服务器地址# master = sentinel.discover_master('mymaster')# print(master)## # # 获取从服务器地址# slave = sentinel.discover_slaves('mymaster')# print(slave)### # # 获取主服务器进行写入# master = sentinel.master_for('mymaster')# master.set('foo', 'bar')   # # # # 获取从服务器进行读取(默认是round-roubin)# slave = sentinel.slave_for('mymaster', password='redis_auth_pass')# r_ret = slave.get('foo')# print(r_ret)

六、有兴趣接电子设计相关小型项目的请加下群,每个项目一般在1000元以内,非诚勿扰

转载地址:http://gxfff.baihongyu.com/

你可能感兴趣的文章
java开发时内存溢出问题
查看>>
【easyui】combobox 关于省市联动
查看>>
启动mysql时,提示“Another MySQL daemon already running with the same unix socket.”解决方法
查看>>
设置csdn皮肤方法,更改自己喜欢的老版皮肤
查看>>
Eclipse中无法查看JDK源码,解决方法
查看>>
Linux下yum安装Mysql数据库,及启动时报“[ERROR] Fatal error: Can't open and lock privilege tables
查看>>
Git操作常用口令
查看>>
IDEA去除掉虚线,波浪线,和下划线实线的方法
查看>>
MYSQL新特性secure_file_priv 读写文件
查看>>
idea中的一些常用快捷键
查看>>
最值得拥有的免费Bootstrap后台管理模板
查看>>
Django获取请求头信息和返回json数据
查看>>
Django项目实战----点击商品分类查询出商品和销量排行
查看>>
Django项目实战---搜索引擎Elasticsearch
查看>>
Django实战----页面静态化
查看>>
Django实战---商城购物车的增删改、显示和合并购物车
查看>>
Django项目实战----订单页面的显示和生成订单、提交订单的逻辑
查看>>
Django项目实战----生成订单时高并发问题使用乐观锁
查看>>
Django项目实战----添加支付宝支付
查看>>
DRF框架---前言(简单使用)
查看>>