[python]操作redis sentinel以及cluster
先了解清楚sentinel和cluster的差别,再学习使用python操作redis的API,感觉会更加清晰明白。
1、redis sentinel和cluster的区别
sentinel遵循主从结构。最小的sentinel会有一个master节点和两个slave节点,三个节点上均有sentinel守护进程在运行。当master挂掉时,会由其余节点投票产生新的master;但是当多数节点都不可用时,例如:三个节点中有两个节点不可用,则failover失败。
数据存储时,master节点负责管理数据,因此所有的写操作均要通过master节点。
cluster则是平行结构。可以理解为是全部N个节点都是相同的replicas,其中有1个replica作为master,其余N-1个同样的节点作为slave。当master挂掉时,cluster会自动指定新的master。
数据存储时,cluster使用哈希槽来进行数据的统一管理,写操作无需通过master操作。
二者的区别如下:
1)sentinel的多数节点挂掉时,failover失败;而cluster在这种情况依然能够正常failover。
2)sentinel需要通过master定位数据所在节点,通过master写入;而cluster统一管理和写入数据。
2、python操作sentinel和cluster实例
关键是搞清楚使用的库和sentinel、cluster的操作流程。
操作sentinel,向集合中写入数据:
from redis.sentinel import Sentinel
# 创建sentinel对象
rs = Sentinel([('localhost', 26379)], socket_timeout=0.1)
# 指定redis实例名为ux_exp
# 创建到master的连接,用于写操作
master = rs.master_for('ux_exp', socket_timeout=0.1)
# 写入数据xxx到16001_top集合
master.sadd('16001_top', 'xxxx')
# 随机读取一个16001_top集合的一个元素
master.srandmember('16001_top',2)
操作cluster,向redis中写入键-值对:
from rediscluster import StrictRedisCluster
# 配置信息
startup_nodes = [{"host": "127.0.0.1", "port": "7000"}]
# 创建cluster对象
rc = StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True)
# 插入数据
rc.set("foo", "bar")
# 读取数据
print(rc.get("foo"))
总结,先搞清楚sentinel和cluster的基本原理,才能比较容易的使用python进行相应的操作。
[python]操作redis sentinel以及cluster的更多相关文章
- Python—操作redis
Python操作redis 连接方式:点击 1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建, ...
- python——操作Redis
在使用django的websocket的时候,发现web请求和其他当前的django进程的内存是不共享的,猜测django的机制可能是每来一个web请求,就开启一个进程去与web进行交互,一次来达到利 ...
- Python操作Redis、Memcache、RabbitMQ、SQLAlchemy
Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...
- Python操作redis系列之 列表(list) (四)
# -*- coding: utf- -*- import redis r =redis.Redis(host=,password="ZBHRwlb1608") 1. Lpush ...
- 数据库之redis篇(3)—— Python操作redis
虽然前面两篇已经说了redis的一些配置安装什么的,篇幅有点长,可能看完了也不知道怎么操作,这里再浓缩一下: 什么是redis redis完全开源免费的,遵守BSD协议,是一个高性能的非关系型key- ...
- python操作redis命令
Python操作redis from redis import StrictRedis, ConnectionPoolredis_url="redis://:xxxx@112.27.10.1 ...
- Python操作Redis及连接方式
前沿:随着互联网的高速发展,数据变得越来越重要,Python成为了人工智能的热门语言,而Nosql数据库已成为日常开发用品. 今天要写的是Python操作Redis Redis的安装我就不介绍了,你可 ...
- python操作Redis安装、支持存储类型、普通连接、连接池
一.python操作redis安装和支持存储类型 安装redis模块 pip3 install redis 二.Python操作Redis之普通连接 redis-py提供两个类Redis和Strict ...
- python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作
python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...
随机推荐
- python – time.sleep – 睡眠线程
import time from threading import Thread class worker(Thread): def run(self): for x in xrange(0,11): ...
- sqlserver创建计算列 转
转 http://www.cnblogs.com/lgx5/p/6017874.html 表中其它列的计算值 创建的sql create table table1 ( number decimal(1 ...
- servlet-api-2.4.jar not loaded(转)
信息: validateJarFile(D:/xj/workspace/webworktest/webapp/WEB-INF/lib/servlet-api-2.4.jar) - jar not lo ...
- Spring JdbcTemplate 查询出的Map,是如何产生大小写忽略的Key的?(转)
原文地址:Spring JdbcTemplate 查询出的Map,是如何产生大小写忽略的Key的? 原始讨论组:用Spring JdbcTemplate 查询出的Map,是如何产生大小写忽略的Key的 ...
- png文件格式详解,获取文件的修改时间,创作时间
http://dev.gameres.com/Program/Visual/Other/PNGFormat.htmhttp://www.360doc.com/content/11/0428/12/10 ...
- python匿名函数以及return语句
- Java并发机制及锁的实现原理
同步的基本思想 为了保证共享数据在同一时刻只被一个线程使用,我们有一种很简单的实现思想,就是 在共享数据里保存一个锁 ,当没有线程访问时,锁是空的. 当有第一个线程访问时,就 在锁里保存这个线程的标识 ...
- windows 网络操作
ver 命令 显示当前机器上的操作系统版本信息 ipconfig/release 释放IP地址 ipconfig/renew 重新获取IP地址 cmd下使用ssh 如果想在cmd中输入 ssh xx@ ...
- 架构之路:nginx与IIS服务器搭建集群实现负载均衡(一)
最近亮亮在研究IIS的负载均衡!本人由于初出茅庐,防骗意识薄弱,一不小心被亮亮坑上了IIS负载均衡之路(亮亮是真黑哈!).前车之鉴啊!小伙伴们要小心.不过既上了贼船,便决定一条道走到黑.于是乎从大前天 ...
- this&super两个关键字的意义和用法
"this",作为一个特殊的关键字,它的规则如下: 1.可以表示构造函数传递.this(a,b)表示调用另外一个构造函数.这里面的this就是一个特殊语法,不是变量,没有什么类型. ...