summaryrefslogtreecommitdiff
path: root/searx/engines
diff options
context:
space:
mode:
authorGaspard d'Hautefeuille <github@dhautefeuille.eu>2025-07-09 07:55:37 +0200
committerGitHub <noreply@github.com>2025-07-09 07:55:37 +0200
commitf798ddd4922d793d5e6ccb7c4111810d549ff4f4 (patch)
tree223aa9d26deb176d983cd8e1bed51ff2cff71eff /searx/engines
parentbd593d0bad2189f57657bbcfa2c5e86f795c680e (diff)
[mod] migrate from Redis to Valkey (#4795)
This patch migrates from `redis==5.2.1` [1] to `valkey==6.1.0` [2]. The migration to valkey is necessary because the company behind Redis has decided to abandon the open source license. After experiencing a drop in user numbers, they now want to run it under a dual license again. But this move demonstrates once again how unreliable the company is and how it treats open source developers. To review first, read the docs:: $ make docs.live Follow the instructions to remove redis: - http://0.0.0.0:8000/admin/settings/settings_redis.html Config and install a local valkey DB: - http://0.0.0.0:8000/admin/settings/settings_valkey.html [1] https://pypi.org/project/redis/ [2] https://pypi.org/project/valkey/ Co-authored-by: HLFH <gaspard@dhautefeuille.eu> Co-authored-by: Markus Heiser <markus.heiser@darmarit.de>
Diffstat (limited to 'searx/engines')
-rw-r--r--searx/engines/valkey_server.py (renamed from searx/engines/redis_server.py)36
1 files changed, 18 insertions, 18 deletions
diff --git a/searx/engines/redis_server.py b/searx/engines/valkey_server.py
index eebb5809b..b2d3dd26f 100644
--- a/searx/engines/redis_server.py
+++ b/searx/engines/valkey_server.py
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
-"""Redis is an open source (BSD licensed), in-memory data structure (key value
-based) store. Before configuring the ``redis_server`` engine, you must install
-the dependency redis_.
+"""Valkey is an open source (BSD licensed), in-memory data structure (key value
+based) store. Before configuring the ``valkey_server`` engine, you must install
+the dependency valkey_.
Configuration
=============
@@ -17,11 +17,11 @@ Below is an example configuration:
.. code:: yaml
- # Required dependency: redis
+ # Required dependency: valkey
- - name: myredis
+ - name: myvalkey
shortcut : rds
- engine: redis_server
+ engine: valkey_server
exact_match_only: false
host: '127.0.0.1'
port: 6379
@@ -34,13 +34,13 @@ Implementations
"""
-import redis # pylint: disable=import-error
+import valkey # pylint: disable=import-error
from searx.result_types import EngineResults
engine_type = 'offline'
-# redis connection variables
+# valkey connection variables
host = '127.0.0.1'
port = 6379
password = ''
@@ -50,12 +50,12 @@ db = 0
paging = False
exact_match_only = True
-_redis_client = None
+_valkey_client = None
def init(_engine_settings):
- global _redis_client # pylint: disable=global-statement
- _redis_client = redis.StrictRedis(
+ global _valkey_client # pylint: disable=global-statement
+ _valkey_client = valkey.StrictValkey(
host=host,
port=port,
db=db,
@@ -72,28 +72,28 @@ def search(query, _params) -> EngineResults:
res.add(res.types.KeyValue(kvmap=kvmap))
return res
- kvmap: dict[str, str] = _redis_client.hgetall(query)
+ kvmap: dict[str, str] = _valkey_client.hgetall(query)
if kvmap:
res.add(res.types.KeyValue(kvmap=kvmap))
elif " " in query:
qset, rest = query.split(" ", 1)
- for row in _redis_client.hscan_iter(qset, match='*{}*'.format(rest)):
+ for row in _valkey_client.hscan_iter(qset, match='*{}*'.format(rest)):
res.add(res.types.KeyValue(kvmap={row[0]: row[1]}))
return res
def search_keys(query) -> list[dict]:
ret = []
- for key in _redis_client.scan_iter(match='*{}*'.format(query)):
- key_type = _redis_client.type(key)
+ for key in _valkey_client.scan_iter(match='*{}*'.format(query)):
+ key_type = _valkey_client.type(key)
res = None
if key_type == 'hash':
- res = _redis_client.hgetall(key)
+ res = _valkey_client.hgetall(key)
elif key_type == 'list':
- res = dict(enumerate(_redis_client.lrange(key, 0, -1)))
+ res = dict(enumerate(_valkey_client.lrange(key, 0, -1)))
if res:
- res['redis_key'] = key
+ res['valkey_key'] = key
ret.append(res)
return ret