首先连接: 创建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相关推荐

  1. 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 ...

  2. Golang_实战_连接redis

    Golang 文章目录 Golang 1 何为redis 2 连接redis 2.1 读写 2.2 检测值是否存在 2.3 删除 2.4 读写json到redis 2.5 设置过期时间 2. 6 列表 ...

  3. Openresty最佳案例 | 第7篇: 模块开发、OpenResty连接Redis

    Lua模块开发 在实际的开发过程中,不可能把所有的lua代码写在一个lua文件中,通常的做法将特定功能的放在一个lua文件中,即用lua模块开发.在lualib目录下,默认有以下的lua模块. lua ...

  4. RedisClient 连接redis 提示 ERR Client sent AUTH, but no password is set

    使用redisclient连接redis出现上图的错误 在配置中已经找到requirepass修改了密码,但是还是出现上图错误.在网上找了资料在dos设置 出现上图红框中的错误,研究了半天也没有解决. ...

  5. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

    原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Red ...

  6. Redis系列-远程连接redis并给redis加锁

    假设两台Redis服务器,ip分别为:192.168.1.101和192.168.1.103,如何在101上通过redis-cli访问103上的redis呢?在远程连接103之前,先讲下redis-c ...

  7. 使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法

    使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法 参考文章: (1)使用RedisDesktopManager客户端无法连接Redis服务器问题解决办法 (2)ht ...

  8. linux下搭建redis并解决无法连接redis的问题

    linux下搭建redis并解决无法连接redis的问题 参考文章: (1)linux下搭建redis并解决无法连接redis的问题 (2)https://www.cnblogs.com/bestmy ...

  9. Jedis连接redis

    今天与大家分享下,Jedis连接池使用.先看一段JAVA 代码: JedisPoolConfig config = new JedisPoolConfig();config.setMaxIdle(10 ...

  10. java连接redis无法连接,报异常RedisConnectionException

    不管是spring还是原生jedis连接redis,如果连不上多半是linux服务器的问题: 1 首先确保redis端口开放: 把6379或者redis的端口开放即可 2 redis.conf配置注释 ...

最新文章

  1. ATS中的RAM缓存简介
  2. 经典C语言程序100例之五五
  3. C++ Queues(队列)
  4. MyBatis(三)MyBatis缓存和工作原理
  5. vscode 不能运行h5c3代码_让开发效率“飞起”的VS Code 插件
  6. 十余位权威专家深度解读,达摩院2019十大科技趋势点燃科技热情
  7. PDF 补丁丁 0.4.1.688 测试版发布(请务必用其替换 682 测试版)
  8. ApacheCN 人工智能知识树 v1.0
  9. wxWidgets第四课 EVT_LEFT_UP关联鼠标弹起事件不生效
  10. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
  11. linux系统网络命令(六)
  12. win10连接共享打印机出现0x0000011b
  13. qt qml StackView 触摸滑动返回(swiping pop)
  14. 画图软件origin-柱状图断点设置
  15. 竹林七贤:没有信仰的人生有多可怕?
  16. 开幕在即!众星齐聚八泉峡推介会 为山西加油,为二青助力!
  17. 没人带宝宝,所以才要送去托育园?
  18. 用友NC65 配置UAP时 打开sysconfig闪退
  19. Java中元空间解析
  20. Lecture4 神经网络与反向传播(1)

热门文章

  1. basler相机详细使用说明
  2. 数据库中如何新增一个字段
  3. Xshell 发送文本到当前Xshell窗口的全部会话
  4. ArcCatalog不能预览地图服务
  5. JUCE学习笔记01-子组件与Graphics类
  6. Ubuntu 修改IP地址
  7. 微信localids上传自己服务器,移动端微信图片上传
  8. 安装Realtek RTL8111/RTL8168网卡驱动详解(error~eth0:no such device)
  9. 13-[LVI-SAM]visual_odometry_初探
  10. E-96系列电阻值代号对照表