图片防止重复。每次提取之后就POP掉

This commit is contained in:
liuwei
2026-01-28 09:15:12 +08:00
parent 29d22ce83e
commit 0d81889029

View File

@@ -203,19 +203,22 @@ class XiurenImagePlugin(MessagePluginInterface):
def _get_random_pic(self) -> Optional[str]:
"""
从 Redis 随机获取图片路径
从 Redis 随机获取并移除图片路径(确保不重复使用)
"""
redis_key = ImageCacheManager.IMAGE_KEY_PREFIX + "all"
try:
img = DBConnectionManager.get_instance().get_redis_connection().srandmember(redis_key)
# 使用 spop 随机弹出并删除一个元素
img = DBConnectionManager.get_instance().get_redis_connection().spop(redis_key)
if img:
# redis 返回 bytes转字符串
return img.decode('utf-8') if isinstance(img, bytes) else img
else:
self.LOG.warning("Redis 中没有图片数据")
return None
self.LOG.warning("Redis 中没有图片数据(可能已全部耗尽)")
return None
except Exception as e:
self.LOG.error(f"从 Redis 获取随机图片失败: {e}")
self.LOG.error(f"从 Redis 获取并删除随机图片失败: {e}")
return None
# def _get_random_pic(self) -> Optional[str]: