beego存取数据库改造,添加redis缓存demo

原方法

//通过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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值