Beego 使用redigo连接redis
首先连接: 创建services/redis 文件夹 , 创建redis.go 文件
package redisClientimport ("github.com/garyburd/redigo/redis""time"
)// 直接连接
func Connect() redis.Conn {pool, _ := redis.Dial("tcp", "127.0.0.1:6379")return pool
}// 连接池连接
func PoolConnect() redis.Conn {pool := &redis.Pool{MaxIdle: 1, //最大空闲连接数MaxActive: 10, // 最大连接数IdleTimeout: 180 * time.Second, //空闲连接超时时间Wait: true, // 超过最大连接数的操作:等待Dial: func() (redis.Conn, error) {c, err := redis.Dial("tcp", "127.0.0.1:6379")if err != nil {return nil, err}return c, nil},}return pool.Get()
}
使用redis
package controllersimport ("fmt""github.com/astaxie/beego""github.com/garyburd/redigo/redis"redisClient "youku/services/redis"
)type RedisController struct {beego.Controller
}// @router /redis/demo [*]
func (this *RedisController) RedisDemo() {c := redisClient.PoolConnect()defer c.Close()_, err := c.Do("SET", "username", "123")if err != nil {}// 设置过期时间c.Do("expire", "username", 3000)// 获取username, err := redis.String(c.Do("get", "username"))if err == nil {fmt.Println(username)// 剩余过期时间ttl, err := redis.Int64(c.Do("ttl", "username"))fmt.Println(ttl)fmt.Println(err)}fmt.Println(3)fmt.Println(err)this.Ctx.WriteString("123456")
}
改造demo
type Video struct {Id intTitle stringSubTitle stringAddTime int64Img stringImg1 stringEpisodesCount intIsEnd intChannelId intStatus intRegionId intTypeId intEpisodesUpdateTime int64Comment intUserId intIsRecommend int
}// 获取视频详情
func GetVideoInfo(videoId int) (Video, error) {o := orm.NewOrm()var video Videoerr := o.Raw("select * from video where id=? limit 1", videoId).QueryRow(&video)return video, err
}// redis缓存-获取视频详情
func RedisGetVideoInfo(videoId int) (Video, error) {var video Videoconn := redisClient.PoolConnect()defer conn.Close()redisKey := "video:id:" + strconv.Itoa(videoId)// 判断redis是否存在exists, err := redis.Bool(conn.Do("exists", redisKey))if exists {// redis读取res, _ := redis.Values(conn.Do("hgetall", redisKey))err = redis.ScanStruct(res, &video)} else {// 数据库读取o := orm.NewOrm()err := o.Raw("select * from video where id=? limit 1", videoId).QueryRow(&video)if err == nil {//保存redis_, err := conn.Do("hmset", redis.Args{redisKey}.AddFlat(video)...) //redigo 提供的函数转化struct存到redis中if err == nil {// 设置过期时间 1 dayconn.Do("expire", redisKey, 86400)}}}return video, err
}
Beego 使用redigo连接redis相关推荐
- write tcp 127.0.0.1:53008->127.0.0.1:6379: use of closed network connection原因—Go连接Redis
在使用连接redis时遇到了一些问题.容许我从头讲起 第三方开源库 go get -v github.com/garyburd/redigo/redis 使用时导入SDK包 操作使用Redis fu ...
- Golang_实战_连接redis
Golang 文章目录 Golang 1 何为redis 2 连接redis 2.1 读写 2.2 检测值是否存在 2.3 删除 2.4 读写json到redis 2.5 设置过期时间 2. 6 列表 ...
- Openresty最佳案例 | 第7篇: 模块开发、OpenResty连接Redis
Lua模块开发 在实际的开发过程中,不可能把所有的lua代码写在一个lua文件中,通常的做法将特定功能的放在一个lua文件中,即用lua模块开发.在lualib目录下,默认有以下的lua模块. lua ...
- RedisClient 连接redis 提示 ERR Client sent AUTH, but no password is set
使用redisclient连接redis出现上图的错误 在配置中已经找到requirepass修改了密码,但是还是出现上图错误.在网上找了资料在dos设置 出现上图红框中的错误,研究了半天也没有解决. ...
- [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis 介绍了Red ...
- Redis系列-远程连接redis并给redis加锁
假设两台Redis服务器,ip分别为:192.168.1.101和192.168.1.103,如何在101上通过redis-cli访问103上的redis呢?在远程连接103之前,先讲下redis-c ...
- 使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法
使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法 参考文章: (1)使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法 (2)ht ...
- linux下搭建redis并解决无法连接redis的问题
linux下搭建redis并解决无法连接redis的问题 参考文章: (1)linux下搭建redis并解决无法连接redis的问题 (2)https://www.cnblogs.com/bestmy ...
- Jedis连接redis
今天与大家分享下,Jedis连接池使用.先看一段JAVA 代码: JedisPoolConfig config = new JedisPoolConfig();config.setMaxIdle(10 ...
- java连接redis无法连接,报异常RedisConnectionException
不管是spring还是原生jedis连接redis,如果连不上多半是linux服务器的问题: 1 首先确保redis端口开放: 把6379或者redis的端口开放即可 2 redis.conf配置注释 ...
最新文章
- ATS中的RAM缓存简介
- 经典C语言程序100例之五五
- C++ Queues(队列)
- MyBatis(三)MyBatis缓存和工作原理
- vscode 不能运行h5c3代码_让开发效率“飞起”的VS Code 插件
- 十余位权威专家深度解读,达摩院2019十大科技趋势点燃科技热情
- PDF 补丁丁 0.4.1.688 测试版发布(请务必用其替换 682 测试版)
- ApacheCN 人工智能知识树 v1.0
- wxWidgets第四课 EVT_LEFT_UP关联鼠标弹起事件不生效
- OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
- linux系统网络命令(六)
- win10连接共享打印机出现0x0000011b
- qt qml StackView 触摸滑动返回(swiping pop)
- 画图软件origin-柱状图断点设置
- 竹林七贤:没有信仰的人生有多可怕?
- 开幕在即!众星齐聚八泉峡推介会 为山西加油,为二青助力!
- 没人带宝宝,所以才要送去托育园?
- 用友NC65 配置UAP时 打开sysconfig闪退
- Java中元空间解析
- Lecture4 神经网络与反向传播(1)