[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 ├ ...
随机推荐
- bzoj2875
题意:\(x_{i+1}=(x_{i}*a+c)%m\)求,x_n%g 题解:\(x_n=(a^n*x_0+(a^{n-1}+a^{n-2}+...+a+1)*c)%m\),由于a-1和m不一定互质, ...
- 【Oracle】【5】主键、外键管理
前言: 1,事实上我是不使用外键的,所以本文只介绍主键 正文: (1)创建表的同时创建主键约束 create table STUDENT ( ID int , NAME varchar(8), AGE ...
- 导出函数__declspec(dllexport)
一般而言,动态链接库中定义有两种函数:导出函数(export function)和内部函数(internal function). 导出函数可以被其它模块调用,内部函数在定义它们的DLL程序内部使用. ...
- Version Control System
Version Control System(版本控制系统),是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型 ...
- PAT 1023 Have Fun with Numbers
1023 Have Fun with Numbers (20 分) Notice that the number 123456789 is a 9-digit number consisting ...
- JQuary中的FullPage属性的用法
$(document).ready(function(){ //常用方法 //$.fn.fullpage.moveSectionUp() //向上滚动一页 //$.fn.fullpage.m ...
- iOS封装功能生成 .framework
前言 如果你想将你开发的控件与别人分享,一种方法是直接提供源代码文件.然而,这种方法并不是很优雅.它会暴露所有的实现细节,而这些实现你可能并不想开源出来.此外,开发者也可能并不想看到你的所有代码,因为 ...
- 前端开发VScode常用插件
名称 功能 Auto Close Tag 自动闭合HTML标签 Auto Import Typescript 自动import提示 Auto Rename Tag 修改HTML标签时,自动修改匹配的标 ...
- ProtoBuf 常用序列化/反序列化API 转
http://blog.csdn.net/sealyao/article/details/6940245 1.C数组的序列化和反序列化API //C数组的序列化和序列化API bool ParseFr ...
- git Please move or remove them before you can merge.
git clean -d -fx "" 其中 x -----删除忽略文件已经对git来说不识别的文件 d -----删除未被添加到git的路径中的文件 f -----强制运行