先了解清楚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的更多相关文章

  1. Python—操作redis

    Python操作redis 连接方式:点击 1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建, ...

  2. python——操作Redis

    在使用django的websocket的时候,发现web请求和其他当前的django进程的内存是不共享的,猜测django的机制可能是每来一个web请求,就开启一个进程去与web进行交互,一次来达到利 ...

  3. Python操作Redis、Memcache、RabbitMQ、SQLAlchemy

    Python操作 Redis.Memcache.RabbitMQ.SQLAlchemy redis介绍:redis是一个开源的,先进的KEY-VALUE存储,它通常被称为数据结构服务器,因为键可以包含 ...

  4. Python操作redis系列之 列表(list) (四)

    # -*- coding: utf- -*- import redis r =redis.Redis(host=,password="ZBHRwlb1608") 1. Lpush ...

  5. 数据库之redis篇(3)—— Python操作redis

    虽然前面两篇已经说了redis的一些配置安装什么的,篇幅有点长,可能看完了也不知道怎么操作,这里再浓缩一下: 什么是redis redis完全开源免费的,遵守BSD协议,是一个高性能的非关系型key- ...

  6. python操作redis命令

    Python操作redis from redis import StrictRedis, ConnectionPoolredis_url="redis://:xxxx@112.27.10.1 ...

  7. Python操作Redis及连接方式

    前沿:随着互联网的高速发展,数据变得越来越重要,Python成为了人工智能的热门语言,而Nosql数据库已成为日常开发用品. 今天要写的是Python操作Redis Redis的安装我就不介绍了,你可 ...

  8. python操作Redis安装、支持存储类型、普通连接、连接池

    一.python操作redis安装和支持存储类型 安装redis模块 pip3 install redis 二.Python操作Redis之普通连接 redis-py提供两个类Redis和Strict ...

  9. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

随机推荐

  1. 『cs231n』卷积神经网络工程实践技巧_下

    概述 计算加速 方法一: 由于计算机计算矩阵乘法速度非常快,所以这是一个虽然提高内存消耗但是计算速度显著上升的方法,把feature map中的感受野(包含重叠的部分,所以会加大内存消耗)和卷积核全部 ...

  2. java骰子求和算法

    //扔 n 个骰子,向上面的数字之和为 S.给定 Given n,请列出所有可能的 S 值及其相应的概率public class Solution { /** * @param n an intege ...

  3. js动态修改title

    问题描述: 由于微信浏览器只在页面首次加载时初始化了标题title,之后就没有再监听 window.title的change事件.所以这里修改了title后,立即创建一个请求,加载一个空的iframe ...

  4. UI基础六:UI报弹窗确认

    数据检查部分: IF gv_zzzcustmodeno1 <> gv_zzzcustmodeno2 AND gv_plg_name NE 'YES'. lv_title = 'Confir ...

  5. 《高性能SQL调优精要与案例解析》新书样章

    该书样章已上传,需要的同学可以通过如下地址下载:http://www.itpub.net/thread-2091839-1-1.html http://www.itpub.net/thread-209 ...

  6. :after 写三角形 border

    .tooltip:after { content: ''; position: absolute; border: 6px solid #5190ac; border-color: #5190ac t ...

  7. Win10怎么设置打开文件的默认程序

  8. LY.JAVA面向对象编程.内存图

    2018-07-06 一个对象的内存图 两个对象的内存图 三个对象的内存图 this static super 向上转型 向下转型

  9. spoj1811

    题解: 后缀自动机 先把A的后缀自动机建好 然后用B再上面跑 如果不能转移就跳fail 如果可以就到下一个可行状态 代码: #include<bits/stdc++.h> using na ...

  10. 【资料收集】QT 环境安装配置

    (很详细,极力推荐) [OpenCV] -- win7下配置OpenCV的Qt开发环境 - 代码人生 - 博客频道 - CSDN.NET  http://blog.csdn.net/qiurisuix ...