go语言使用redis —— redigo
go语言使用redis —— redigo
wolfred7464 · 2015-07-24 03:00:00 · 16602 次点击 · 预计阅读时间 2 分钟 · 2分钟之前 开始浏览
redis的client有好多好多,go语言的client在redis官方有两个推荐,radix和redigo。选择哪一个好呢?确实很纠结,后来掷硬币决定选择redigo了。
redis、go、redigo的安装就不需要提了,不能强行增加篇幅。
redigo使用起来很人性化,api设计的符合直觉,我对redis了解较少,使用过程中基本没有遇到障碍。
redigo的使用入门可以去查godoc:http://godoc.org/github.com/garyburd/redigo/redis
接下来就是毫无技术含量的贴代码了:
连接redis我一般是这样写的:
1 c, err := redis.Dial("tcp", "127.0.0.1:6379") 2 if err != nil { 3 fmt.Println(err) 4 return 5 } 6 defer c.Close()
执行命令使用Do函数,跟在redis-cli敲命令的感觉差不多的:
1 v, err := c.Do("SET", "name", "red") 2 if err != nil { 3 fmt.Println(err) 4 return 5 } 6 fmt.Println(v) 7 v, err = redis.String(c.Do("GET", "name")) 8 if err != nil { 9 fmt.Println(err) 10 return 11 } 12 fmt.Println(v)
列表也是一样:
1 c.Do("lpush", "redlist", "qqq") 2 c.Do("lpush", "redlist", "www") 3 c.Do("lpush", "redlist", "eee")
读取列表可以for循环遍历,也可以使用redis.Scan函数:
1 values, _ := redis.Values(c.Do("lrange", "redlist", "0", "100")) 2 3 for _, v := range values { 4 fmt.Println(string(v.([]byte))) 5 } 6 7 // 或者 8 var v1 string 9 redis.Scan(values, &v1) 10 fmt.Println(v1)
管道:
1 c.Send("SET", "name", "red") 2 c.Send("GET", "name") 3 c.Flush() 4 c.Receive() 5 c.Receive()
发布订阅:
1 func subscribe() { 2 c, err := redis.Dial("tcp", "127.0.0.1:6379") 3 if err != nil { 4 fmt.Println(err) 5 return 6 } 7 defer c.Close() 8 9 psc := redis.PubSubConn{c} 10 psc.Subscribe("redChatRoom") 11 for { 12 switch v := psc.Receive().(type) { 13 case redis.Message: 14 fmt.Printf("%s: message: %s\n", v.Channel, v.Data) 15 case redis.Subscription: 16 fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count) 17 case error: 18 fmt.Println(v) 19 return 20 } 21 } 22 }
1 go subscribe() 2 go subscribe() 3 go subscribe() 4 go subscribe() 5 go subscribe() 6 7 c, err := redis.Dial("tcp", "127.0.0.1:6379") 8 if err != nil { 9 fmt.Println(err) 10 return 11 } 12 defer c.Close() 13 14 for { 15 var s string 16 fmt.Scanln(&s) 17 _, err := c.Do("PUBLISH", "redChatRoom", s) 18 if err != nil { 19 fmt.Println("pub err: ", err) 20 return 21 } 22 }
差不多就是这样了,确实也没什么可以解释的。。。
go语言使用redis —— redigo相关推荐
- c语言操作redis数据库
前言 redis(Remote Dictionary Server)是一个使用ANSI C编写的开源.支持网络.基于内存.可选持久性的键值对存储数据库–来自维基百科.由于其读写性能高.数据结构丰富.支 ...
- Go实战--golang中使用redis(redigo和go-redis/redis这个已测试)
自己做测试了没有问题,虚拟机连不上可以把包下载到本地. 版权声明:本文为博主原创文章,未经博主允许不得转载. http://blog.csdn.net/wangshubo1989/article/de ...
- go语言连接redis(已测试)
自己做测试了没有问题,虚拟机连不上可以把包下载到本地. 下面使用的是groe库连接redis简单展示如何操作. 先下载gore,命令行输入 go get github.com/keimoon/gore ...
- go bson转换成json_你会不会用Go语言实现redis的延时消息队列
在学习过程中发现redis的zset还可以用来实现轻量级的延时消息队列功能,虽然可靠性还有待提高,但是对于一些对数据可靠性要求不那么高的功能要求完全可以实现.本次主要采用了redis中zset中的za ...
- golang使用redis——redigo安装
点此跳转Redigo工具包Github链接 1. 方法1 控制台输入下面命令,加载完即可使用. go get github.com/gomodule/redigo/redis 2. 方法2 文件中引入 ...
- 通过go 语言访问redis
主要记录的功能点 配置解析 连接redis 单侧 配置模块 定义配置结构体 package config type Configuration struct {// +++++++++++++++日志 ...
- Go实战--golang中使用redis(redigo和go-redis/redis)
生命不止,继续 go go go !!! 以前介绍过golang中如何使用sqlite3: <Go实战–go语言操作sqlite数据库(The way to go)> 今天跟大家分享的是如 ...
- windows c语言 redis,windows上使用VS2012 C++语言调用Redis的解决方案
最近我在VS2012上进行Redis开发遇到一些困扰. 编译Redis的lib库没问题.但是使用这些lib库就不太顺利了. 在网上查来查去也没解决.不过其实Redis的客户端项目RedisCli.vc ...
- go使用redis——redigo使用HMSET存储结构体
话不多说,先放方法,再举例子. rc.Do("HMSET", redis.Args{key}.AddFlat(val)...) rc是什么?是一个连接,创建方式如下: var (r ...
最新文章
- 基于OpenCV修复表格缺失的轮廓--如何识别和修复表格识别中的虚线
- springboot学习笔记(一)
- Undefined function or method ' ' for input arguments of type 'double' ---错误解决办法
- QT的QPair类的使用
- python 操作mysql数据库
- 数据结构之二叉树:二叉查找树的先序、中序、后序、层序遍历,Python代码实现——10(续)
- 【Unity】UGUI无法修改字体大小
- 在centos7安装nodejs并升级nodejs到最新版本
- 微软邀请IT管理人员及开发人员参加用户体验在线调研
- LayaAir graphics 矢量绘图之直线、折线、曲线
- 在静态页面html中跳转传值
- 用python调用ICTCLAS50进行中文分词
- 计算机动漫与游戏制作电脑配置,动漫与游戏设计该如何选电脑配置?
- JDK7官方下载地址
- 《The Selfish Giant》
- 2021年7月20日我国暴雨趋势遥感监测与评估
- 【django】如何获取字段最大值,最新的记录
- Xming(windows下的X Server)的使用,在windows下运行你的终端和所有基于XWindow的程序
- 设置Adobe Reader为default的PDF阅读工具
- 一些通用 编程变量 单词(常用变量名;持续更新...)
热门文章
- MATLAB作二维傅里叶变换所需要注意和知道的东西(im2double、fft2、abs、imshow、二维傅里叶变换的物理意义)
- android rebound平移,Android 仿 IOS 拖拽回弹之进阶 ReboundFrameLayout
- KVM virtio_net之NAPI机制(十七)
- leetcode算法题--统计全为 1 的正方形子矩阵
- leetcode算法题--K站中转内最便宜的航班★
- python图片转字符画
- php 文件迭代对象,通过PHP中的stdClass对象进行迭代
- 线程池模式比较-------ICE线程池模型------L/F领导者跟随者模式
- ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】
- 整理下java六种单例模式