关键修复:

hset 替代 hmset:hmset 被弃用,因此我们使用 hset 来替代它,并通过 mapping 参数一次性更新整个哈希表。

每次更新成员时都触发 Redis 更新:

无论是加入成员还是退出成员,我们都通过 self.r.hset() 确保每次成员变化时,Redis 中的 group_members 哈希表都会被更新。
确保更新顺序:

每次对成员列表进行更新后,我们都更新 Redis 中的成员数据,避免成员退出时遗漏更新。
This commit is contained in:
liuwei
2025-02-19 11:10:13 +08:00
parent aeb22d4d7c
commit 49fe199ca2

View File

@@ -48,7 +48,7 @@ class GroupMemberChange:
print("First time processing, saving current data to Redis")
members_current = self.get_current_members(group_id)
self.r.set(f"group:group_member_count:{group_id}", membercount_current)
self.r.hmset(f"group:group_members:{group_id}", members_current) # 存储当前成员信息
self.r.hset(f"group:group_members:{group_id}", mapping=members_current) # 存储当前成员信息
# 更新本地缓存
self.local_membercounts[group_id] = membercount_current
@@ -93,7 +93,9 @@ class GroupMemberChange:
# 更新 Redis 数据
print(f"Updating Redis with current membercount and members")
self.r.set(f"group:group_member_count:{group_id}", membercount_current)
self.r.hmset(f"group:group_members:{group_id}", members_current)
# 更新 Redis 中的成员信息,确保在成员变化时也更新
self.r.hset(f"group:group_members:{group_id}", mapping=members_current)
else:
result.append("$NO_CHANGE$")