searxng/searx/shared/shared_redis.py
Markus Heiser 4809bf705c [mod] shared.storage: implement a backend to store in the redis DB
- implement shared_redis.RedisCacheSharedDict to store key/value pairs in the
  redis DB.  The default key_prefix is 'SearXNG_SharedDict'.

- simplify searx.shared and import RedisCacheSharedDict, set
  key_prefix to 'SearXNG_storage'

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
2022-09-24 19:56:14 +02:00

29 lines
1.1 KiB
Python

# SPDX-License-Identifier: AGPL-3.0-or-later
# lint: pylint
# pyright: strict
"""Module implements a :py:class:`shared_abstract.SharedDict` to store data in a
redis DB (:py:obj:`redisdb`)."""
from typing import Optional
from . import shared_abstract
from . import redisdb
class RedisCacheSharedDict(shared_abstract.SharedDict):
"""Store key/value in the redis DB, the default prefix of the key in the DB is
``SearXNG_SharedDict`` (see :py.obj:`searx.redislib.purge_by_prefix`)."""
def __init__(self, key_prefix='SearXNG_SharedDict'):
self.key_prefix = key_prefix
def get_int(self, key: str) -> Optional[int]:
return int(redisdb.client().get(self.key_prefix + key))
def set_int(self, key: str, value: int):
redisdb.client().set(self.key_prefix + key, str(value).encode())
def get_str(self, key: str) -> Optional[str]:
value = redisdb.client().get(self.key_prefix + key)
return None if value is None else value.decode()
def set_str(self, key: str, value: str):
redisdb.client().set(self.key_prefix + key, value.encode())