go redis redigo
来源:互联网 发布:mac可以用bluestacks 编辑:程序博客网 时间:2024/06/04 18:07
redigo是redis官网推荐的go client之一。本文简单介绍其使用。
安装
go get github.com/garyburd/redigo/redis
Example
simple get
package mainimport ( "log" "github.com/garyburd/redigo/redis")func main() { server := "127.0.0.1:6379" c, err := redis.Dial("tcp", server) if err != nil { log.Println("connect server failed:", err) return } defer c.Close() v, err2 := redis.String(c.Do("GET", "foo")) if err2 != nil { log.Println("GET failed:", err2) return } log.Println("value:", v)}
output:
value: “bar”
set
set json格式的数据。
package mainimport ( "log" "encoding/json" "github.com/garyburd/redigo/redis")type DeviceItem struct { Id int `json:"device_id"` Type int `json:"device_type"`}func main() { server := "127.0.0.1:6379" c, err := redis.Dial("tcp", server) if err != nil { log.Println("connect server failed:", err) return } defer c.Close() device := DeviceItem{Id: 3002, Type: 2} b, err2 := json.Marshal(device) if err2 != nil { log.Println("Unmarshal failed:", err2) return } v, err3 := redis.String(c.Do("SET", "10.8.158.119", string(b))) if err3 != nil { log.Println("GET failed:", err3) return } log.Println("value:", v)}
output:
2017/12/15 15:01:28 value: OK
pool
redis pool的使用。
package mainimport ( "encoding/json" "log" "time" "github.com/garyburd/redigo/redis")type Host struct { IP string Name string}var RedisConnPool *redis.Poolconst redisServer = "127.0.0.1:6379"func main() { // redis pool InitRedisConnPool() go reader("Num1") go reader("Num2") select { } // at last RedisConnPool.Close()}func InitRedisConnPool() { RedisConnPool = &redis.Pool{ MaxIdle: 1, IdleTimeout: 240 * time.Second, Dial: func() (redis.Conn, error) { c, err := redis.Dial("tcp", redisServer) if err != nil { return nil, err } return c, err }, TestOnBorrow: PingRedis, }}func PingRedis(c redis.Conn, t time.Time) error { _, err := c.Do("ping") if err != nil { log.Println("[ERROR] ping redis fail", err) } return err}func reader(name string) { log.Printf("reader %s start ...\n", name) rc := RedisConnPool.Get() defer rc.Close() for { v, err := redis.String(rc.Do("GET", "Host1001")) if err != nil { log.Printf("%s GET failed:%v\n", name, err) time.Sleep(1*time.Second) continue } log.Printf("%s value:%v\n", name, v) h := Host{} if err := json.Unmarshal([]byte(v), &h); err != nil { log.Printf("%s Unmarshal failed:%v\n", name, err) continue } log.Printf("%s host:%v\n", name, h) time.Sleep(1*time.Second) }}
参考
redis官网推荐的go client
https://redis.io/clients#go
redigo
https://github.com/garyburd/redigo
redigo example
https://www.zybuluo.com/NickYu/note/61130
https://studygolang.com/articles/4542
http://blog.csdn.net/stevefang/article/details/40474827
阅读全文
0 0
- Redigo--Go连接Redis
- Redigo--Go连接Redis
- go redis redigo
- Redigo---Go版的Redis-client
- go语言使用redis —— redigo
- 用go写的redis proxy 简单的测试redigo
- Go实战--golang中使用redis(redigo和go-redis/redis)
- Redigo---Go版的Redis-client(二 链接池来处理链接)
- Redigo--用池管理redis连接
- redigo的redis.Pool 配置参数调优
- redigo 用户指南
- 初尝-Go之Redis
- go语言连接redis
- Go语言操作Redis
- go-redis in golang
- Go语言操作Redis
- Using Go with Redis
- go-访问redis
- vs2013+opencv 2.4.13+qt5.7.1+win10(64bit) 环境配置
- Python(4)-- 随机生成N位验证码的字符
- cxf2.X开发
- Java WebSocket实现网络聊天室(群聊+私聊)
- 基于TFIDF的文档表示法
- go redis redigo
- 轮播
- repo sync出现“fatal: '../platform/abi/cpp.git' does not appear to be a git repository”的解决方案
- 左旋
- Shiro之加密方式-yellowcong
- HDFS简介
- python 笔记 12月17日
- 剑指offer 编程题(12):数组奇偶
- linux内核的I2C子系统详解3——i2c-core.c初步分析、I2C总线的匹配机制