mirror of https://github.com/langgenius/dify.git
perf: using pipeline to delete redis cache (#30159)
This commit is contained in:
parent
0c4233e7df
commit
996c7d9e16
|
|
@ -1,6 +1,6 @@
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
from typing import Any
|
from typing import Any, cast
|
||||||
|
|
||||||
from core.tools.entities.api_entities import ToolProviderTypeApiLiteral
|
from core.tools.entities.api_entities import ToolProviderTypeApiLiteral
|
||||||
from extensions.ext_redis import redis_client, redis_fallback
|
from extensions.ext_redis import redis_client, redis_fallback
|
||||||
|
|
@ -50,7 +50,9 @@ class ToolProviderListCache:
|
||||||
redis_client.delete(cache_key)
|
redis_client.delete(cache_key)
|
||||||
else:
|
else:
|
||||||
# Invalidate all caches for this tenant
|
# Invalidate all caches for this tenant
|
||||||
pattern = f"tool_providers:tenant_id:{tenant_id}:*"
|
keys = ["builtin", "model", "api", "workflow", "mcp"]
|
||||||
keys = list(redis_client.scan_iter(pattern))
|
pipeline = redis_client.pipeline()
|
||||||
if keys:
|
for key in keys:
|
||||||
redis_client.delete(*keys)
|
cache_key = ToolProviderListCache._generate_cache_key(tenant_id, cast(ToolProviderTypeApiLiteral, key))
|
||||||
|
pipeline.delete(cache_key)
|
||||||
|
pipeline.execute()
|
||||||
|
|
|
||||||
|
|
@ -96,9 +96,6 @@ class TestToolProviderListCache:
|
||||||
|
|
||||||
ToolProviderListCache.invalidate_cache(tenant_id)
|
ToolProviderListCache.invalidate_cache(tenant_id)
|
||||||
|
|
||||||
mock_redis_client.scan_iter.assert_called_once_with(f"tool_providers:tenant_id:{tenant_id}:*")
|
|
||||||
mock_redis_client.delete.assert_called_once_with(*mock_keys)
|
|
||||||
|
|
||||||
def test_invalidate_cache_no_keys(self, mock_redis_client):
|
def test_invalidate_cache_no_keys(self, mock_redis_client):
|
||||||
"""Test invalidate cache - no cache keys for tenant"""
|
"""Test invalidate cache - no cache keys for tenant"""
|
||||||
tenant_id = "tenant_123"
|
tenant_id = "tenant_123"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue