From 77bc9594cf73b5bd472e9d2f57226ecb6e50f2a7 Mon Sep 17 00:00:00 2001 From: yangdx Date: Mon, 31 Mar 2025 01:34:41 +0800 Subject: [PATCH] Remove delete_entity and delete_entity_relation from RediskKVStorage --- lightrag/kg/redis_impl.py | 68 ++------------------------------------- 1 file changed, 2 insertions(+), 66 deletions(-) diff --git a/lightrag/kg/redis_impl.py b/lightrag/kg/redis_impl.py index 3feb4985..435adee1 100644 --- a/lightrag/kg/redis_impl.py +++ b/lightrag/kg/redis_impl.py @@ -8,8 +8,8 @@ if not pm.is_installed("redis"): pm.install("redis") # aioredis is a depricated library, replaced with redis -from redis.asyncio import Redis -from lightrag.utils import logger, compute_mdhash_id +from redis.asyncio import Redis # type: ignore +from lightrag.utils import logger from lightrag.base import BaseKVStorage import json @@ -83,67 +83,3 @@ class RedisKVStorage(BaseKVStorage): logger.info( f"Deleted {deleted_count} of {len(ids)} entries from {self.namespace}" ) - - async def delete_entity(self, entity_name: str) -> None: - """Delete an entity by name - - Args: - entity_name: Name of the entity to delete - """ - - try: - entity_id = compute_mdhash_id(entity_name, prefix="ent-") - logger.debug( - f"Attempting to delete entity {entity_name} with ID {entity_id}" - ) - - # Delete the entity - result = await self._redis.delete(f"{self.namespace}:{entity_id}") - - if result: - logger.debug(f"Successfully deleted entity {entity_name}") - else: - logger.debug(f"Entity {entity_name} not found in storage") - except Exception as e: - logger.error(f"Error deleting entity {entity_name}: {e}") - - async def delete_entity_relation(self, entity_name: str) -> None: - """Delete all relations associated with an entity - - Args: - entity_name: Name of the entity whose relations should be deleted - """ - try: - # Get all keys in this namespace - cursor = 0 - relation_keys = [] - pattern = f"{self.namespace}:*" - - while True: - cursor, keys = await self._redis.scan(cursor, match=pattern) - - # For each key, get the value and check if it's related to entity_name - for key in keys: - value = await self._redis.get(key) - if value: - data = json.loads(value) - # Check if this is a relation involving the entity - if ( - data.get("src_id") == entity_name - or data.get("tgt_id") == entity_name - ): - relation_keys.append(key) - - # Exit loop when cursor returns to 0 - if cursor == 0: - break - - # Delete the relation keys - if relation_keys: - deleted = await self._redis.delete(*relation_keys) - logger.debug(f"Deleted {deleted} relations for {entity_name}") - else: - logger.debug(f"No relations found for entity {entity_name}") - - except Exception as e: - logger.error(f"Error deleting relations for {entity_name}: {e}")