fix redis client

This commit is contained in:
knst-kotov 2021-08-16 15:09:04 +03:00
parent fbb8a0e93d
commit 9618802c6b

View File

@ -1,50 +1,49 @@
from typing import Optional from typing import Optional
import aioredis import aioredis
# from aioredis import ConnectionsPool
from settings import REDIS_URL
from settings import REDIS_URL
class Redis:
class Redis: def __init__(self, uri=REDIS_URL):
def __init__(self, uri=REDIS_URL): self._uri: str = uri
self._uri: str = uri self._instance = None
self._instance = None
async def connect(self):
async def connect(self): if self._instance is not None:
if self._instance is not None: return
return self._instance = aioredis.from_url(self._uri, encoding="utf-8")
self._instance = await aioredis.from_url(self._uri)# .create_pool(self._uri)
async def disconnect(self):
async def disconnect(self): if self._instance is None:
if self._instance is None: return
return self._instance.close()
self._instance.close() await self._instance.wait_closed()
await self._instance.wait_closed() self._instance = None
self._instance = None
async def execute(self, command, *args, **kwargs):
async def execute(self, command, *args, **kwargs): return await self._instance.execute_command(command, *args, **kwargs)
return await self._instance.execute(command, *args, **kwargs, encoding="UTF-8")
async def test():
async def test(): redis = Redis()
redis = Redis() from datetime import datetime
from datetime import datetime
await redis.connect()
await redis.connect() await redis.execute("SET", "1-KEY1", 1)
await redis.execute("SET", "1-KEY1", 1) await redis.execute("SET", "1-KEY2", 1)
await redis.execute("SET", "1-KEY2", 1) await redis.execute("SET", "1-KEY3", 1)
await redis.execute("SET", "1-KEY3", 1) await redis.execute("SET", "1-KEY4", 1)
await redis.execute("SET", "1-KEY4", 1) await redis.execute("EXPIREAT", "1-KEY4", int(datetime.utcnow().timestamp()))
await redis.execute("EXPIREAT", "1-KEY4", int(datetime.utcnow().timestamp())) v = await redis.execute("KEYS", "1-*")
v = await redis.execute("KEYS", "1-*") print(v)
print(v) await redis.execute("DEL", *v)
await redis.execute("DEL", *v) v = await redis.execute("KEYS", "1-*")
v = await redis.execute("KEYS", "1-*") print(v)
print(v)
if __name__ == '__main__':
if __name__ == '__main__': import asyncio
import asyncio
asyncio.run(test())
asyncio.run(test())