添加用户数据同步确认部分

This commit is contained in:
junleea 2024-12-13 20:26:39 +08:00
parent 3571772bb1
commit 71783fe15f
2 changed files with 22 additions and 10 deletions

View File

@ -131,9 +131,13 @@ func UserSyncDataFromMaster() {
// 同步数据到主服务器-增删改数据
func GetUserSyncData(device string) proto.UserSyncResp {
key := device + "_sync_user_ids"
add_user_ids := worker.GetRedisSetMembers(key + "_add")
update_user_ids := worker.GetRedisSetMembers(key + "_update")
delete_user_ids := worker.GetRedisSetMembers(key + "_delete")
add_temp_key := device + "_sync_user_ids_add_confirm_temp"
update_temp_key := device + "_sync_user_ids_update_confirm_temp"
delete_temp_key := device + "_sync_user_ids_delete_confirm_temp"
//需要获取暂存集合的并集,清空暂存集合,存入待确认集合
add_user_ids := worker.GetRedisSetUnion(key+"_add", add_temp_key)
update_user_ids := worker.GetRedisSetUnion(key+"_update", update_temp_key)
delete_user_ids := worker.GetRedisSetUnion(key+"_delete", delete_temp_key)
add_users := []dao.User{}
update_users := []dao.User{}
delete_users := []proto.UserDelID{}
@ -153,16 +157,13 @@ func GetUserSyncData(device string) proto.UserSyncResp {
id, _ := strconv.Atoi(v)
delete_users = append(delete_users, proto.UserDelID{ID: uint(id)})
}
//将id存入暂存集合清空原集合
add_temp_key := device + "_sync_user_ids_add_confirm_temp"
update_temp_key := device + "_sync_user_ids_update_confirm_temp"
delete_temp_key := device + "_sync_user_ids_delete_confirm_temp"
//将id存入暂存集合清空原集合存入待确认集合主要保证在确认时有新的数据加入不会在确认时漏掉
worker.SetRedisSetUnionAndStore(add_temp_key, key+"_add")
worker.SetRedisSetClear(key + "_add")
worker.ClearRedisSet(key + "_add")
worker.SetRedisSetUnionAndStore(update_temp_key, key+"_update")
worker.SetRedisSetClear(key + "_update")
worker.ClearRedisSet(key + "_update")
worker.SetRedisSetUnionAndStore(delete_temp_key, key+"_delete")
worker.SetRedisSetClear(key + "_delete")
worker.ClearRedisSet(key + "_delete")
return proto.UserSyncResp{Add: add_users, Update: update_users, Delete: delete_users}
}

View File

@ -449,3 +449,14 @@ func ClearRedisSet(key string) bool {
}
return true
}
// 获取两个集合的并集
func GetRedisSetUnion(key1 string, key2 string) []string {
ctx := context.Background()
val, err := RedisClient.SUnion(ctx, key1, key2).Result()
if err != nil {
fmt.Println("Error getting key: %v", err)
return nil
}
return val
}