package repo import ( "egg-im/internal/logic/domain/group/model" "egg-im/pkg/db" "egg-im/pkg/gerrors" "strconv" "time" "github.com/go-redis/redis" ) const GroupKey = "group:" type groupCache struct{} var GroupCache = new(groupCache) // Get 获取群组缓存 func (c *groupCache) Get(groupId int64) (*model.Group, error) { var user model.Group err := db.RedisUtil.Get(GroupKey+strconv.FormatInt(groupId, 10), &user) if err != nil && err != redis.Nil { return nil, gerrors.WrapError(err) } if err == redis.Nil { return nil, nil } return &user, nil } // GetLimit 获取群组缓存 func (c *groupCache) GetLimit(limit string, groupId int64) (*model.Group, error) { var user model.Group err := db.RedisUtil.Get(GroupKey+limit+":"+strconv.FormatInt(groupId, 10), &user) if err != nil && err != redis.Nil { return nil, gerrors.WrapError(err) } if err == redis.Nil { return nil, nil } return &user, nil } // Set 设置群组缓存 func (c *groupCache) Set(group *model.Group) error { err := db.RedisUtil.Set(GroupKey+strconv.FormatInt(group.Id, 10), group, 4*time.Hour) if err != nil { return gerrors.WrapError(err) } return nil } // SetLimit 设置群组缓存 func (c *groupCache) SetLimit(limit string, group *model.Group) error { err := db.RedisUtil.Set(GroupKey+limit+":"+strconv.FormatInt(group.Id, 10), group, 4*time.Hour) if err != nil { return gerrors.WrapError(err) } return nil } // Del 删除群组缓存 func (c *groupCache) Del(groupId int64) error { _, err := db.RedisCli.Del(GroupKey + strconv.FormatInt(groupId, 10)).Result() if err != nil { return gerrors.WrapError(err) } return nil }