可以通过 token 来取不同的值,因为 token 是唯一的标识符,可以用来存储和读取不同的数据。在你的代码中,存储数据的时候是将一个 map 转换成了 json 字符串,然后将 json 字符串存储到 redis 中。读取数据的时候,是从 redis 中获取 json 字符串,然后将 json 字符串解析成了一个 LoadingTime 对象。因此,如果你想存储不同的数据,只需要将不同的 map 转换成不同的 json 字符串,然后用不同的 token 存储到 redis 中即可。在读取数据的时候,根据不同的 token 获取不同的 json 字符串,然后解析成不同的对象即可。

msg := map[string]interface{}{'is_start': 1}
data, _ := json.Marshal(&msg)
err = dao.RedisSetKey(this.Token, string(data), config.TokenExp)
if err != nil {
	logs.Error('%s, err = %v', commonInfo, err)
	this.OnError(errno.EC_InnerError, errno.EM_InnerError)
	return
}

func (this *NoticeDetectionCtl) OnHandleLoadingTime() {
	commonInfo := fmt.Sprintf('HandleLoadingTime, Id = %d ', this.Session.Id)
	info := make(map[string]int)
	data, err := dao.RedisGetKey(this.Token)
	if err != nil || data == '' {
		logs.Error('%s, data = %s, err = %v, invalid', commonInfo, data, err)
		_ = dao.RedisDelKey(this.Token)
		this.OnError(errno.EC_NotFound, errno.EM_NotFound)
		return
	}
	var flag LoadingTime
	err = json.Unmarshal([]byte(data), &flag)
	if err != nil {
		logs.Error('%s, err = %v', commonInfo, err)
		return
	}
	info['is_start'] = flag.IsStart
	this.OnSuccess(data)
}
Golang Beego 使用 Token 在 Redis 中存储和读取不同数据

原文地址: https://www.cveoy.top/t/topic/oUl0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录