[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进行相应的操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NOSQL类型简介键值对:会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,如redis,volde...
    MicoCube阅读 9,491评论 2 27
  • redis集群分为服务端集群和客户端分片,redis3.0以上版本实现了集群机制,即服务端集群,3.0以下使用客户...
    hadoop_null阅读 5,492评论 0 6
  • 作者:黄湘龙 花了三天时间,把REDIS 3.0.6英文版大部分都翻译过来了,还有部分没翻译完,等我慢慢更新本文章...
    TopTools阅读 5,732评论 0 0
  • sentinel:上一篇提到了主从切换,sentinel的作用是将这个过程自动化,实现高可用。它的主要功能有以下几...
    米刀灵阅读 12,253评论 0 6
  • 近来心情变得特别惆怅,自己迷失了自己,找不到未来的路。主管离职,同事调岗,自己对目前工作的厌倦,组织未来发展也飘忽...
    辉太郎0924阅读 1,605评论 0 0