33 lines
808 B
Python
33 lines
808 B
Python
from aredis import StrictRedis
|
|
import asyncio
|
|
|
|
|
|
class RedisDrive:
|
|
client: StrictRedis = None
|
|
|
|
# async def get_keys(self, *keys, prefix='') -> list:
|
|
# res = []
|
|
# for key in keys:
|
|
# key = prefix + key
|
|
# data = await self.client.get(key, encoding='utf8')
|
|
# res.append(data)
|
|
# return res
|
|
|
|
async def smembers_keys(self, *keys, prefix='') -> dict:
|
|
tasks = []
|
|
for key in keys:
|
|
task = asyncio.create_task(self.client.smembers(prefix + key))
|
|
tasks.append(task)
|
|
data = await asyncio.gather(*tasks)
|
|
return {k: v for k, v in zip(keys, data)}
|
|
|
|
def __getattr__(self, item):
|
|
return getattr(self.client, item)
|
|
|
|
|
|
rdb = RedisDrive()
|
|
|
|
|
|
def get_redis_pool() -> RedisDrive:
|
|
return rdb
|