内容概述
自定义 session 结构体: type Session struct { SessionID string `json:"sessionId" bson:"sessionId"` User *User `json:"-" bson:"user"` UserType string `json:"userType" bson:"u
语音解读
图文解释
type Session struct {
SessionID string `json:"sessionId" bson:"sessionId"`
User *User `json:"-" bson:"user"`
UserType string `json:"userType" bson:"userType"`
NickName string `json:"nickName" bson:"nickName"`
CreateTime time.Time `json:"-" bson:"createTime"`
UpdateTime time.Time `json:"-" bson:"updateTime"`
Expires time.Time `json:"-" bson:"expires"`
Locale string `json:"-" bson:"locale"` // default is zh_CN
Menus []wmodel.Menu `json:"menus" bson:"menus"`
}/*
【增】
描述:向 session 哈希表中插入一个 session 对象
session 顶级 key,顶级 key 可以设置过期时间
<[session]: 要插入的 session 对象
>[error]:插入失败相关信息
*/
func (s *sessionService) addSession(session *model.Session) error {
// 从池里获取连接
conn := pool.Get()
if conn == nil {
log.Errorf("redis connnection is nil")
return errors.New("redis connnection is nil")
}
// 用完后将连接放回连接池
defer conn.Close()
// 将session转换成json数据,注意:转换后的value是一个byte数组
value,err := json.Marshal(session)
if err != nil {
log.Errorf("json marshal err,%s",err)
return err
}
log.Infof("send data[%s]",session.SessionID,value)
_,err = conn.Do("SET",value)
if err != nil {
return err
}
return nil
}func TestAddSession(t *testing.T) {
s := &model.Session{
SessionID: "20150421120000",UserType: "admin",NickName: "df",}
err := sService.addSession(s)
if err != nil {
t.Errorf("fail to add one session(%+v): %s",s,err)
t.FailNow()
}
}
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给好友。