def redis_cluster_check(): rc = StrictRedisCluster(startup_nodes=startup_nodes, password=redis_password, readonly_mode=True) cluster_nodes = rc.cluster_nodes() for i in cluster_nodes: if i['link-state'] == 'connected': link_state = 1 else: link_state = 0 if 'master' in i['flags']: redis_node_stat.labels(host=i['host'], port=i['port'], role='master',hostname=hostname).set(link_state) slave_stat = 0 for j in cluster_nodes: if i['id'] == j['master'] and i['host'] != j['host']: slave_stat = 1 else: pass redis_masternode_slavestat.labels(host=i['host'], port=i['port'],hostname=hostname).set(slave_stat) else: redis_node_stat.labels(host=i['host'], port=i['port'], role='slave',hostname=hostname).set(link_state)
import random import json import operator from rediscluster import StrictRedisCluster redis_node = [ {"host": "192.168.10.183", "port": "6379"} ] redis_db = StrictRedisCluster(startup_nodes=redis_node, max_connections=32, decode_responses=True) pipe = redis_db.pipeline(transaction=False) rcm = [i for i in redis_db.cluster_nodes() if 'master' in i['flags'] and i['link-state'] == 'connected'] nodes = [i for i in sorted(rcm, key=operator.itemgetter('id'))] print '=========================' print len(nodes) rcm = [i for i in redis_db.cluster_nodes() if 'slave' in i['flags'] and i['link-state'] == 'connected'] node = random.choice(rcm) value = pipe.get("foo") print "=================" + str(value)