python redis集群工具封装

本文介绍了一种使用Python连接Redis集群的方法,并展示了如何利用RedisPipeline进行高效的数据读写操作,同时还实现了键值对的基本增删改查功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 实现python连接redis集群
  • 实现海量数据读写redis pipeline,每秒一万行
  • 实现k-v,增删改查部分功能
from rediscluster import RedisCluster


class RedisBase:
    def __init__(self, nodes):
        self.r = RedisCluster(startup_nodes=nodes)

    def get(self, key):
        value = ''
        if self.r.exists(key):
            value = self.r.get(key)
        else:
            print(f'未知:{key}')
        return value

    def m_get(self, keys):
        if isinstance(keys, str):
            keys = self.keys(pattern=keys)
        print(keys)
        value = self.r.mget(keys)
        return dict(zip(keys, value))

    def set(self, key, value):
        self.r.set(key, value)

    def m_set(self, data):
        with self.r.pipeline(transaction=False) as pipe:
            for k, v in data.items():
                pipe.set(k, v)
            pipe.execute()

    def keys(self, pattern='*'):
        key_list = self.r.keys(pattern)
        return key_list

    def delete(self, key):
        count = 0
        if '*' in key:
            key_list = self.keys(pattern=key)
            count = 0
            with self.r.pipeline(transaction=False) as pipe:
                for k in key_list:
                    pipe.delete(k)
                    count += 1
                pipe.execute()
        else:
            if self.r.exists(key):
                count = self.r.delete(key)
            else:
                print(f'未知:{key}')
        return count


if __name__ == '__main__':
    node_list = [
        {'host': '192.168.1.1', 'port': 6379},
        {'host': '192.168.1.1', 'port': 6380},
        {'host': '192.168.1.1', 'port': 6381}
    ]
    redis_base = RedisBase(nodes=node_list)
    _dict = {f'rd:home_guess:u{x}': f'i{x}' for x in range(2)}
    print(_dict)
    redis_base.m_set(data=_dict)
    print(redis_base.get(key='testkeyhahh'))
    print(redis_base.delete(key='testtest'))
    redis_base.keys(pattern='rd:*')
    print(redis_base.delete('rd:hom*'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值