go语言使用redis —— redigo
来源:互联网 发布:mac玩qq堂 编辑:程序博客网 时间:2024/05/16 03:52
go语言使用redis —— redigo
wolfred7464 · 2015-07-24 03:00:00 · 16602 次点击 · 预计阅读时间 2 分钟 ·2分钟之前 开始浏览这是一个创建于 2015-07-24 03:00:00 的文章,其中的信息可能已经有所发展或是发生改变。
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 return5 }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 return11 }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 return20 }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 return11 }12 defer c.Close()13 14 for {15 var s string16 fmt.Scanln(&s)17 _, err := c.Do("PUBLISH", "redChatRoom", s)18 if err != nil {19 fmt.Println("pub err: ", err)20 return21 }22 }
差不多就是这样了,确实也没什么可以解释的。。。
阅读全文
0 0
- go语言使用redis —— redigo
- Redigo--Go连接Redis
- Redigo--Go连接Redis
- go redis redigo
- Go实战--golang中使用redis(redigo和go-redis/redis)
- Redigo---Go版的Redis-client
- 用go写的redis proxy 简单的测试redigo
- Redigo---Go版的Redis-client(二 链接池来处理链接)
- gedis——go语言开发的redis代理
- go语言连接redis
- Go语言操作Redis
- Go语言操作Redis
- redigo 批量删除使用
- 使用GO语言开发 Redis数据监控程序
- 如何在 Go 语言中使用 Redis 连接池
- Redis Go语言客户端指南
- Redigo--用池管理redis连接
- 19.笔记go语言——使用Mysql驱动
- 15分钟搭建独立电子书博客
- JAVA-WEB Hibernate面试整理
- 结构体及位段
- 三极管基极偏置电路原理应用于继电器的驱动电路的分析
- Markdown
- go语言使用redis —— redigo
- 数据结构:单源最短路径--Dijkstra算法
- JSP内置对象和EL内置对象及区别解析
- 高级数据结构及算法分类
- CreateProcess 创建带命令行参数的进程时,报错或者提示内存位置无效的可能的一个原因
- 抽象类
- Android MVP(Model View Presenter)
- Java1.8源码阅读-DualPivotQuicksort
- delphi 身份证号码相关处理单元