diff --git a/pkg/rpccache/common.go b/pkg/rpccache/common.go new file mode 100644 index 000000000..6dc826e30 --- /dev/null +++ b/pkg/rpccache/common.go @@ -0,0 +1,20 @@ +package rpccache + +func newListMap[V comparable](values []V, err error) (*listMap[V], error) { + if err != nil { + return nil, err + } + lm := &listMap[V]{ + List: values, + Map: make(map[V]struct{}, len(values)), + } + for _, value := range values { + lm.Map[value] = struct{}{} + } + return lm, nil +} + +type listMap[V comparable] struct { + List []V + Map map[V]struct{} +} diff --git a/pkg/rpccache/conversation.go b/pkg/rpccache/conversation.go index e5c28f464..45c37529b 100644 --- a/pkg/rpccache/conversation.go +++ b/pkg/rpccache/conversation.go @@ -19,7 +19,9 @@ func NewConversationLocalCache(client rpcclient.ConversationRpcClient, cli redis localcache.WithLocalSlotSize(lc.SlotSize), ), } - go subscriberRedisDeleteCache(context.Background(), cli, lc.Topic, x.local.DelLocal) + if lc.Enable() { + go subscriberRedisDeleteCache(context.Background(), cli, lc.Topic, x.local.DelLocal) + } return x } diff --git a/pkg/rpccache/friend.go b/pkg/rpccache/friend.go index 0e1faa78b..f1dec36cc 100644 --- a/pkg/rpccache/friend.go +++ b/pkg/rpccache/friend.go @@ -19,7 +19,9 @@ func NewFriendLocalCache(client rpcclient.FriendRpcClient, cli redis.UniversalCl localcache.WithLocalSlotSize(lc.SlotSize), ), } - go subscriberRedisDeleteCache(context.Background(), cli, lc.Topic, x.local.DelLocal) + if lc.Enable() { + go subscriberRedisDeleteCache(context.Background(), cli, lc.Topic, x.local.DelLocal) + } return x } diff --git a/pkg/rpccache/group.go b/pkg/rpccache/group.go index 4b9281366..4c3e32170 100644 --- a/pkg/rpccache/group.go +++ b/pkg/rpccache/group.go @@ -19,7 +19,9 @@ func NewGroupLocalCache(client rpcclient.GroupRpcClient, cli redis.UniversalClie localcache.WithLocalSlotSize(lc.SlotSize), ), } - go subscriberRedisDeleteCache(context.Background(), cli, lc.Topic, x.local.DelLocal) + if lc.Enable() { + go subscriberRedisDeleteCache(context.Background(), cli, lc.Topic, x.local.DelLocal) + } return x } @@ -28,25 +30,6 @@ type GroupLocalCache struct { local localcache.Cache[any] } -type listMap[V comparable] struct { - List []V - Map map[V]struct{} -} - -func newListMap[V comparable](values []V, err error) (*listMap[V], error) { - if err != nil { - return nil, err - } - lm := &listMap[V]{ - List: values, - Map: make(map[V]struct{}, len(values)), - } - for _, value := range values { - lm.Map[value] = struct{}{} - } - return lm, nil -} - func (g *GroupLocalCache) getGroupMemberIDs(ctx context.Context, groupID string) (val *listMap[string], err error) { log.ZDebug(ctx, "GroupLocalCache getGroupMemberIDs req", "groupID", groupID) defer func() {