yangdx commited on
Commit
860ede1
·
1 Parent(s): 061ddac

Add drop support for RedisKVStorage

Browse files
Files changed (1) hide show
  1. lightrag/kg/redis_impl.py +26 -0
lightrag/kg/redis_impl.py CHANGED
@@ -83,3 +83,29 @@ class RedisKVStorage(BaseKVStorage):
83
  logger.info(
84
  f"Deleted {deleted_count} of {len(ids)} entries from {self.namespace}"
85
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  logger.info(
84
  f"Deleted {deleted_count} of {len(ids)} entries from {self.namespace}"
85
  )
86
+
87
+ async def drop(self) -> dict[str, str]:
88
+ """Drop the storage by removing all keys under the current namespace.
89
+
90
+ Returns:
91
+ dict[str, str]: Status of the operation with keys 'status' and 'message'
92
+ """
93
+ try:
94
+ keys = await self._redis.keys(f"{self.namespace}:*")
95
+
96
+ if keys:
97
+ pipe = self._redis.pipeline()
98
+ for key in keys:
99
+ pipe.delete(key)
100
+ results = await pipe.execute()
101
+ deleted_count = sum(results)
102
+
103
+ logger.info(f"Dropped {deleted_count} keys from {self.namespace}")
104
+ return {"status": "success", "message": f"{deleted_count} keys dropped"}
105
+ else:
106
+ logger.info(f"No keys found to drop in {self.namespace}")
107
+ return {"status": "success", "message": "no keys to drop"}
108
+
109
+ except Exception as e:
110
+ logger.error(f"Error dropping keys from {self.namespace}: {e}")
111
+ return {"status": "error", "message": str(e)}