123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- package cache
- import (
- "encoding/json"
- "github.com/go-redis/redis"
- "iot_manager_service/app/user/dao"
- "iot_manager_service/config"
- "time"
- )
- var Redis *redis.Client
- func InitRedis() error {
- cfg := config.Instance()
- addr := cfg.Redis.Host
- Redis = redis.NewClient(&redis.Options{
- Addr: addr,
- DialTimeout: 10 * time.Second,
- ReadTimeout: 30 * time.Second,
- WriteTimeout: 30 * time.Second,
- PoolSize: 10,
- PoolTimeout: 30 * time.Second,
- Password: cfg.Redis.Password,
- DB: 1, //指定 哪个数据库,不然找不到数据
- })
- _, err := Redis.Ping().Result()
- if err != nil {
- return err
- }
- return nil
- }
- const (
- DeviceStateKey = "dev_stat_"
- ONLINE = "online"
- TLast = "tlast"
- DeviceDataKey = "dev_data_"
- TIME = "time"
- )
- // 将当前用户存入到redis中
- func SetNowSysUser(uid string, user *dao.SysUser) {
- marshal, _ := json.Marshal(user)
- Redis.Set("login:"+uid, marshal, time.Hour*24*7)
- }
- // 从redis中取出当前用户
- func GetNowSysUser(uid string) (*dao.SysUser, error) {
- result, _ := Redis.Get("login:" + uid).Result()
- str := []byte(result)
- nowuser := dao.SysUser{}
- err := json.Unmarshal(str, &nowuser)
- return &nowuser, err
- }
- // 将当前用户从redis中删除(退出登录)
- func DeleteToken(uid string) error {
- return Redis.Del("login:" + uid).Err()
- }
- // 存储离线用户的消息
- func StoreMessages(id, msg string) error {
- return Redis.LPush("offline:"+id, msg).Err()
- }
- // 获取用户的离线信息
- func GetStoreMessages(id string) []string {
- result, _ := Redis.LRange("offline:"+id, 0, -1).Result()
- return result
- }
|