原方法
//通过sql根据id得到deptname
func GetById(id int) (Department,error){
var (
dept Department
err error
)
o := orm.NewOrm()
err = o.Raw("SELECT `deptname` FROM department Where id=? LIMIT 1",id).QueryRow(&dept)
return dept,err
}
加入redis改造
//增加redis缓存-获取部门详情
func RedisGetDeptInfo(id int)(Department,error){
var dept Department
conn := redisClient.PoolConnect()
defer conn.Close()
//定义redis key
redisKey := "department:id" +strconv.Itoa(id)
//判断redis中是否存在
exists,err := redis.Bool(conn.Do("exists",redisKey))
if exists {
res,_ := redis.Values(conn.Do("hgetall",redisKey))
err = redis.ScanStruct(res,&dept)
}else{
o := orm.NewOrm()
err := o.Raw("SELECT * FROM department Where id=?",id).QueryRow(&dept)
if err == nil {
//保存redis
_,err := conn.Do("hmset",redis.Args{redisKey}.AddFlat(dept)...)
if err == nil {
//设置过期时间
conn.Do("expire",redisKey,86400)
}
}
}
return dept,err
}