python 连接redis集群

python连接redis集群需要用到第三方模块rediscluster
安装rediscluster : pip install redis-py-cluster

from rediscluster import StrictRedisCluster

class RedisCluster(object):
    def __init__(self,redis_nodes):
        try:
            self.conn = StrictRedisCluster(startup_nodes=redis_nodes)
        except Exception as e:
            log.error("Connect Error:%s"%traceback.format_exc())
            self.conn =  False

    def redis_set(self,key,value,extime=""):
        '''
        set 类型
        :param key:
        :param value:
        :param extime:  失效时间
        :return: bool
        '''
        if not self.conn:
            return False
        if extime:
            return self.conn.set(key,value,extime)
        return self.conn.set(key,value)

    def redis_get(self,key):
        '''
        set 类型
        :param key:
        :return:   str
        '''
        if not self.conn:
            return False
        res = self.conn.get(key)
        if res:
            return res.decode("utf-8")
        else:
            return None

    def redis_del(self,key):
        '''
        除hash类型外多可以使用
        :param key:
        :return:  ==1 删除成功  ==0不存在或没删除成功
        '''
        if not self.conn:
            return False
        return self.conn.delete(key)

    def redis_hset(self,name,key,value):
        '''
        hash 类型
        :param key:
        :param value:
        :return: ==1  成功
        '''
        if not self.conn:
            return False
        return self.conn.hset(name,key,value)

    def redis_hget(self,name,key):
        '''
        hash 类型
        :param key:
        :param value:
        :return: None 未查到数据
        '''
        if not self.conn:
            return False
        res = self.conn.hget(name,key)
        if res:
            return res.decode("utf-8")
        return None

    def redis_hdel(self,name,keys):
        '''
        hash 类型
        :param key:
        :param value:
        :return: ==1 删除成功
        '''
        if not self.conn:
            return False
        return self.conn.hdel(name,keys)

    def redis_saddSet(self,name,*values):
        '''
        sadd 集合
        :param name:
        :param values:  可以一次添加多个
        :return:  ==1 添加成功
        '''
        if not self.conn:
            return False
        return self.conn.sadd(name,*values)

    def redis_smembers(self,name):
        '''
        集合查询使用
        :param name:
        :return:   返回一个列表
        '''
        if not self.conn:
            return False
        res = self.conn.smembers(name)
        if res:
            res_list = []
            for response in res:
                res_list.append(response.decode("utf-8"))
            return res_list
        return None

    def redis_zaddSet(self,name, *args):
        '''
        写入zadd集合
        :param name:
        :param args:   长度等于2
        :return:  ==1  成功
        '''
        if not self.conn:
            return False
        return self.conn.zadd(name, *args)

    def redis_zrangebyscore(self,name, min, max):
        '''
        查询zadd集合元素
        :param name:
        :param min:   开始
        :param max:   结束
        :return:  列表
        '''
        if not self.conn:
            return False
        res = self.conn.zrangebyscore(name,min,max)
        if res:
            res_list = []
            for response in res:
                res_list.append(response.decode("utf-8"))
            return res_list
        return None


    def redis_listSet(self,name, *values):
        '''
        list
        :param name:
        :param values:   可以一次添加多个
        :return:
        '''
        if not self.conn:
            return False
        return self.conn.lpush(name, *values)

    def redis_listGet(self,name, start, end):
        '''
        List
        :param name:
        :param start:   开始
        :param end:     结束
        :return:
        '''
        if not self.conn:
            return False
        res = self.conn.lrange(name, start, end)
        if res:
            res_list = []
            for response in res:
                res_list.append(response.decode("utf-8"))
            return res_list
        else:
            return None



if __name__ == '__main__':
    redis_nodes = [{'host': 'xxx', 'port': xxx},
                   {'host': 'xxx', 'port': xxx},
                   {'host': 'xxx', 'port': xxx}
                   ]
    redis_obj = RedisCluster(redis_nodes)
    # log.info(redis_obj.redis_hset("hasss","111111","admin1"))
    # log.info(redis_obj.redis_hdel("hasss","111111"))
    log.info(redis_obj.redis_listSet("hasss",["111111","222"],"test3"))
    # log.info(redis_obj.redis_smembers("hasss"))
    # log.info(redis_obj.redis_zaddSet("hasssz","0",["test3","test4"]))
    print(redis_obj.redis_del("hasss"))

    log.info(redis_obj.redis_listGet("hasss",0,100))


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

相关阅读更多精彩内容

  • 连接单个节点 单个的直接导入redis模块,设置ip,密码,端口,直接连就OK了 连接集群 redis_nodes...
    黑夜no烟丝阅读 5,595评论 0 1
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 4,440评论 0 5
  • 一、redis cluster简介 Redis在3.0版正式引入了集群这个特性。 Redis集群是一个提供在多个R...
    张伟科阅读 1,778评论 0 4
  • 1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方...
    克鲁德李阅读 5,831评论 0 36
  • 前几天和家人一起逛超市,头上被人拍了一下,我想谁呀,这么调皮?回头一看,原来是以前的一个同事芬,带着她老公也来超市...
    雨果的天空阅读 507评论 0 0

友情链接更多精彩内容