python操作redis集群_python 连接管理作redis集群

python的redis库是不支持集群操作的,推荐库:redis-py-cluster。

安装

pip3 install redis-py-cluster

连接redis集群

 

#!/usr/bin/env python

# coding: utf-8

from rediscluster import StrictRedisCluster

class RedisCluster(object): # 连接redis集群

def __init__(self,conn_list):

self.conn_list = conn_list # 连接列表

def connect(self):

"""

连接redis集群

:return: object

"""

try:

# 非密码连接redis集群

# redisconn = StrictRedisCluster(startup_nodes=self.conn_list)

# 使用密码连接redis集群

redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password='123456')

return redisconn

except Exception as e:

print(e)

print("错误,连接redis 集群失败")

return False

redis_basis_conn = [{'host': '192.168.10.168', 'port': 7201}, {'host': '192.168.10.169', 'port': 7201}, {'host': '192.168.10.170', 'port': 7201}, {'host': '192.168.10.171', 'port': 7201}, {'host': '192.168.10.142', 'port': 7201}, {'host': '192.168.10.143', 'port': 7201}]

res = RedisCluster(redis_basis_conn).connect()

if not res:

print("连接redis集群失败")

else:

print("连接redis集群成功")

执行输出:

连接redis集群成功

二、操作redis集群

查看节点状态

 

#!/usr/bin/env python

# coding: utf-8

from rediscluster import StrictRedisCluster

class RedisCluster(object): # 连接redis集群

def __init__(self,conn_list):

self.conn_list = conn_list # 连接列表

def connect(self):

"""

连接redis集群

:return: object

"""

try:

# 非密码连接redis集群

# redisconn = StrictRedisCluster(startup_nodes=self.conn_list)

# 使用密码连接redis集群

redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password='123456')

return redisconn

except Exception as e:

print(e)

print("错误,连接redis 集群失败")

return False

def get_state(self):

"""

获取状态

:return:

"""

res = RedisCluster(self.conn_list).connect()

# print("连接集群对象",res,type(res),res.__dict__)

if not res:

return False

dic = res.cluster_info() # 查看info信息, 返回dict

for i in dic: # 遍历dict

ip = i.split(":")[0]

if dic[i].get('cluster_state'): # 获取状态

print("节点状态, ip: ", ip, "value: ", dic[i].get('cluster_state'))

redis_basis_conn = [{'host': '192.168.10.168', 'port': 7201}, {'host': '192.168.10.169', 'port': 7201}, {'host': '192.168.10.170', 'port': 7201}, {'host': '192.168.10.171', 'port': 7201}, {'host': '192.168.10.142', 'port': 7201}, {'host': '192.168.10.143', 'port': 7201}]

RedisCluster(redis_basis_conn).get_state()

执行输出:

节点状态, ip: 192.168.10.171 value: ok

节点状态, ip: 192.168.10.169 value: ok

节点状态, ip: 192.168.10.143 value: ok

节点状态, ip: 192.168.10.142 value: ok

节点状态, ip: 192.168.10.170 value: ok

节点状态, ip: 192.168.10.168 value: ok

查看aof是否开启

 

#!/usr/bin/env python

# coding: utf-8

from rediscluster import StrictRedisCluster

class RedisCluster(object): # 连接redis集群

def __init__(self,conn_list):

self.conn_list = conn_list # 连接列表

def connect(self):

"""

连接redis集群

:return: object

"""

try:

# 非密码连接redis集群

# redisconn = StrictRedisCluster(startup_nodes=self.conn_list)

# 使用密码连接redis集群

redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password='123456')

return redisconn

except Exception as e:

print(e)

print("错误,连接redis 集群失败")

return False

def get_info(self):

"""

获取redis集群info信息

:return: dict

"""

res = RedisCluster(self.conn_list).connect()

# print("连接集群对象",res,type(res),res.__dict__)

if not res:

return False

dic = res.cluster_info() # 查看info信息, 返回dict

if not dic:

return False

return dic

def get_state(self):

"""

获取状态

:return:

"""

dic = self.get_info() # type:dict

if not dic:

return dic

for i in dic: # 遍历dict

ip = i.split(":")[0]

if dic[i].get('cluster_state'): # 获取状态

print("节点状态, ip: ", ip, "value: ", dic[i].get('cluster_state'))

def get_has_aof(self):

"""

查看aof是否打开

:return:

"""

res = RedisCluster(self.conn_list).connect()

# print("连接集群对象",res,type(res),res.__dict__)

if not res:

return False

dic = res.config_get('appendonly') # 从config配置项中查询appendonly

for i in dic:

ip = i.split(":")[0]

# print(dic[i])

if dic[i].get('appendonly'):

print("aof开关, ip: ", ip,"value: ",dic[i].get('appendonly'))

redis_basis_conn = [{'host': '192.168.10.168', 'port': 7201}, {'host': '192.168.10.169', 'port': 7201}, {'host': '192.168.10.170', 'port': 7201}, {'host': '192.168.10.171', 'port': 7201}, {'host': '192.168.10.142', 'port': 7201}, {'host': '192.168.10.143', 'port': 7201}]

RedisCluster(redis_basis_conn).get_has_aof()

执行输出:

aof开关, ip: 192.168.10.170 value: no

aof开关, ip: 192.168.10.168 value: no

aof开关, ip: 192.168.10.142 value: no

aof开关, ip: 192.168.10.171 value: no

aof开关, ip: 192.168.10.169 value: no

aof开关, ip: 192.168.10.143 value: no

set和get

 

#!/usr/bin/env python

# coding: utf-8

from rediscluster import StrictRedisCluster

class RedisCluster(object): # 连接redis集群

def __init__(self,conn_list):

self.conn_list = conn_list # 连接列表

def connect(self):

"""

连接redis集群

:return: object

"""

try:

# 非密码连接redis集群

# redisconn = StrictRedisCluster(startup_nodes=self.conn_list)

# 使用密码连接redis集群

redisconn = StrictRedisCluster(startup_nodes=self.conn_list, password='123456')

return redisconn

except Exception as e:

print(e)

print("错误,连接redis 集群失败")

return False

# 连接列表,注意:必须严格按照此格式来!

redis_basis_conn = [{'host': '192.168.10.168', 'port': 7201}, {'host': '192.168.10.169', 'port': 7201}, {'host': '192.168.10.170', 'port': 7201}, {'host': '192.168.10.171', 'port': 7201}, {'host': '192.168.10.142', 'port': 7201}, {'host': '192.168.10.143', 'port': 7201}]

redis_conn = RedisCluster(redis_basis_conn).connect() # redis连接对象

redis_conn.set('name','weijing') # 插入一个值

print("name is: ", redis_conn.get('name')) # 查询值

执行输出:

name is: b'weijing'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将分表汇总到总表_如何把多个Excel表格合并到一起,分表变,总表也自动更新?...

【例】如下图所示,要求把人事部、财务部和销售部3个分表合并到总表中,分表增加或删除人员,总表也会自动更新操作步骤:1、数据-自其他来源-来自MicrosoftQuery。它就是我们今天神秘的主角。2、选取数据源为ExcelFiles*格式&#xf…

dingo php,dingo 配置

Dingo包的大多数配置都预先设置好了,这样你就可以尽快的进入开发模式了,我们也可以参照config/api.php中的env()函数中的内容在.env文件中去设置。当然也可以使用AppServiceProvider中的boot进行设置(这个怎么设置???)…

qt 将int型数据显示在文本框_Qt编写Online judge爬虫

一、前提刚开始接触C/Qt是需要一个项目练练手,当时听说过OJ并且网络不好,就想着把数据获取下来随时使用。后来代码写多了之后听说Python写爬虫更方便,可惜坑已经跳下去了,就一条路走到黑了。这是我代码之路的第一个完整实现完整功…

vim函数跳转 php,求助!! vim-gvim中如何让其显示函数及其参数!!

求助!! vim-gvim中如何让其显示函数及其参数!!(2012-06-05 02:25:34)标签:如何杂谈求助!!vim/gvim中如何让其显示函数及其参数!!用了一段时间的vim,发现在自动补全中发现…

php添加填空,PHP之preg_replace_callback(),将填空题的[[]]替换成______

preg_replace_callback 函数执行一个正则表达式搜索并且使用一个回调进行替换。语法图1这个函数的行为除了可以指定一个 callback 替代 replacement 进行替换字符串的计算,其他方面等同于 preg_replace()。参数说明:$pattern: 要搜索的模式,可…

怎么用php写软件老吴p,11.32 php扩展模块装安

php动态扩展模块添加因为业务需要或者编译php的时候少安装了一个模块,我们现在需要新添加一个模块,那怎么做呢?查看模块/usr/local/php/bin/php -m第一步:去php的安装目录中/ext/目录下查看有没有 你需要安装的扩展模块的包比如&a…

javweb音乐网站_基于javaweb音乐网站设计与实现

基于javaweb音乐网站设计与实现 本科毕业论文(设计)题目:基于JSP的音乐网站的设计与实现姓 名: 学 号: 专 业: 院 系: 指导老师: 职称学位: 讲师/硕士 完成时间: 2015年 …

oracle数据库连接检查,检查Oracle数据库的最大连接

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。[[email protected] sql]# more check_connect_oracle.sh#!/bin/bash#functions: connect oracle server test#author:Tony Wang#modify_date: 2015-06-03.mkdir…

python爬虫进程和线程_python爬虫番外篇(一)进程,线程的初步了解-阿里云开发者社区...

整理这番外篇的原因是希望能够让爬虫的朋友更加理解这块内容,因为爬虫爬取数据可能很简单,但是如何高效持久的爬,利用进程,线程,以及异步IO,其实很多人和我一样,故整理此系列番外篇一、进程程序并不能单独和…

ol xyz 加载天地图_OpenLayers加载天地图方法——WMTS和XYZ

1、ol.layer.Tile及数据源类结构openlayers中,图层(layer)不可缺少的组成部分是数据源(source),天地图是切片的数据服务,对应的图层是ol.layer.Tile,下图是其数据源对应的类结构图,红色部分是重点内容。从图可以看到&a…

linux用户没有创建文件的权限设置密码,Linux学习第五章用户身份与文件权限

一、用户身份与能力Linux系统中一共有三种用户第一种:管理员 root UID 0第二种:系统用户 不需要登录系统 负责单一服务的运行 UID 0-1000第三种:普通用户 日常登录系统操作的用户 UID 1000--uid1000(zhang) gid1000(zhang) groups…

java类验证和装载顺序_Java类加载机制实现流程及原理详解

前言我们知道,Java项目编译后会生成许许多多的class文件,class文件保存着类的描述信息。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转化解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就…

Linux中more命令的使用,Linux中more命令使用详解教程

1、使用权限:所有者 什么是所有者权限?2、使用方式more [参数选项] [文件]参数:num 从第num行开始显示;-num 定义屏幕大小,为num行;/pattern 从pattern 前两行开始显示;-c 从顶部清屏然后显示;-…

k8s 查看ip地址属于哪个pod_一个简单的例子理解Kubernetes的三种IP地址类型

很多Kubernetes的初学者对Kubernetes里面三种不同的IP地址和工作机制理解得不是很清楚。本文我们通过一个最简单的例子来学习。用如下命令行创建一个基于nginx的deployment:kubectl run nginx --imagenginx:maxline用kubectl get deploy查看成功生成的名为nginx的de…

linux resin 查看日志命令,【转】linux:访问日志分析

作为一个程序员或项目负责人,甚至运营人员,很多人都想知道:* 我们的项目访问量怎么样* 用户访问高峰在什么时候* 系统变慢的时候用户做了哪些操作* 用户对哪些功能比较感兴趣* 真实用户在服务器上的操作轨迹是什么样的* 系统的瓶颈在哪* 哪些…

linux系统初级管理书,Linux系统管理基础--超级适合Linux新手的书

liuyongqing 于 2012-11-15 11:53:18发表:谢谢分享liuyongqing 于 2012-11-15 11:53:11发表:谢谢分享liuyongqing 于 2012-11-15 11:52:52发表:谢谢分享liuyongqing 于 2012-11-15 11:52:46发表:谢谢分享liuyongqing 于 2012-11-15 11:52:43发表:谢谢分享wankuixing 于 2012-11…

是vans_Vans 的旧海报上原来有这么多学问…

事情是这样的,某天,当我们编辑部翻开一张 Vans 70 年代的海报,发现开头上面写着:GO “JAMIN” IN VANS。这段话引起了在场的所有人的好奇。(图片来源:Vans)到底什么是 “JAMIN” 呢? 在我们刨根究底的搜寻下…

linux单机到单机adg环境,Oracle 11.2.0.4 DataGuard 环境打PSU,OJVM PSU补丁快速参考

环境:RHEL6.5 Oracle 11.2.0.4 DataGuard physical standby主库和备库都是单节点。需求:主备库同时应用160719的PSU和OJVM PSU补丁。先参考MOS文档 ID 278641.1 的解决方案如下:SOLUTIONProcess Overview:In the primary disable log shippi…

python增量更新数据_Python标准库——加密

增量更新散列计算器的update()方法可以反复调用。每次调用时,都会根据提供的附加文本更新摘要。增量更新比将整个文件读入内存更高效,而且能生成相同的效果。新建hashlib_update.py文件。import hashlibfrom hashlib_data import loremh hashlib.md5()h…

linux 帮助文档管理,Linux系统帮助文件使用——man命令

如何获取命令帮助:(1)如果是内键命令:help COMMAND 例如:help history外部命令: COMMAND –help 例如:ifconfig –help(2)也可以查看manual手册,手册存放在/usr/share/man,全是.gz压缩…