package repo import ( "egg-im/internal/business/domain/user/model" "egg-im/pkg/db" "egg-im/pkg/gerrors" "strconv" "time" "github.com/go-redis/redis" ) const ( UserKey = "user:" UserExpire = 2 * time.Hour ) type userCache struct{} var UserCache = new(userCache) // Get 获取用户缓存 func (c *userCache) Get(userId int64) (*model.User, error) { var user model.User err := db.RedisUtil.Get(UserKey+strconv.FormatInt(userId, 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 *userCache) Set(user model.User) error { err := db.RedisUtil.Set(UserKey+strconv.FormatInt(user.Id, 10), user, UserExpire) if err != nil { return gerrors.WrapError(err) } return nil } // Del 删除用户缓存 func (c *userCache) Del(userId int64) error { _, err := db.RedisCli.Del(UserKey + strconv.FormatInt(userId, 10)).Result() if err != nil { return gerrors.WrapError(err) } return nil }