Redis¶
Initial Redis Class¶
Redis is a good choice for caching, that why we need to use it to store the token or users data some configuration relate to cache.
In Python we use redis/redis-py library to connect to Redis.
Redis CRUD Operations¶
Redis CRUD is a simple CRUD operation, we can use it to store the data in Redis. we need to create some methods. (Get Key-Value, Set Key-Value, Delete Key, etc.)
async def get(self, key: str) -> str:
return await self._redis.get(key)
async def delete(self, key: str) -> None:
await self._redis.delete(key)
return None
async def keys(self, match: str) -> Iterable[str]:
return await self._redis.keys(match)
async def set(
self, key: str, value: Union[str, bytes, int], expire: int = 0
) -> None:
await self._redis.set(key, value, expire=expire)
return None
Warning
It is very important not to await
buffered command (ie
self._redis.set('foo', '123')
) as it will block forever.
Set String Value¶
Using a prebuilt functions using setnx
and incr
to set the value of the key.
async def setnx(self, key: str, value: Union[str, bytes, int], expire: int) -> None:
await self._redis.setnx(key, value)
await self._redis.expire(key, expire)
return None
async def incr(self, key: str) -> str:
return await self._redis.incr(key)
Dispatch Action¶
After we have the client we need to dispatch the action to the client, this
gonna help to publish .json
file to the client.
async def dispatch_action(
self, channel: str,
action: str,
payload: dict) -> None:
await self._redis.publish_json(channel,
{"action": action, "payload": payload})
return None