- 实现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*'))