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