golang中使用Redis
2023-09-14 09:00:37 时间
一.golang中安装Redis
github地址:https://github.com/garyburd/redigo
文档地址:http://godoc.org/github.com/garyburd/redigo/redis
安装:
go get github.com/garyburd/redigo/redis
二.简单连接Redis
conn
package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func main() { c, err := redis.Dial("tcp", "localhost:6379") if err != nil { fmt.Println("conn redis failed,", err) return } defer c.Close() }
hset
package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func main() { c, err := redis.Dial("tcp", "localhost:6379") if err != nil { fmt.Println("conn redis failed,", err) return } defer c.Close() _, err = c.Do("HSet", "books", "abc", 100) if err != nil { fmt.Println(err) return } r, err := redis.Int(c.Do("HGet", "books", "abc")) if err != nil { fmt.Println("get abc failed,", err) return } fmt.Println(r) }
list
package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func main() { c, err := redis.Dial("tcp", "localhost:6379") if err != nil { fmt.Println("conn redis failed,", err) return } defer c.Close() _, err = c.Do("lpush", "book_list", "abc", "ceg", 300) if err != nil { fmt.Println(err) return } r, err := redis.String(c.Do("lpop", "book_list")) if err != nil { fmt.Println("get abc failed,", err) return } fmt.Println(r) }
set
package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func main() { var p *int var a int p = &a *p = 0 c, err := redis.Dial("tcp", "localhost:6379") if err != nil { fmt.Println("conn redis failed,", err) return } defer c.Close() _, err = c.Do("Set", "abc", 100) if err != nil { fmt.Println(err) return } r, err := redis.Int(c.Do("Get", "abc")) if err != nil { fmt.Println("get abc failed,", err) return } fmt.Println(r) }
batch_set
package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func main() { c, err := redis.Dial("tcp", "localhost:6379") if err != nil { fmt.Println("conn redis failed,", err) return } defer c.Close() _, err = c.Do("MSet", "abc", 100, "efg", 300) if err != nil { fmt.Println(err) return } r, err := redis.Ints(c.Do("MGet", "abc", "efg")) if err != nil { fmt.Println("get abc failed,", err) return } for _, v := range r { fmt.Println(v) } }
过期设置
package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func main() { c, err := redis.Dial("tcp", "localhost:6379") if err != nil { fmt.Println("conn redis failed,", err) return } defer c.Close() _, err = c.Do("expire", "abc", 10) if err != nil { fmt.Println(err) return } }
连接池
package main import ( "fmt" "github.com/garyburd/redigo/redis" ) var pool *redis.Pool func init() { pool = &redis.Pool{ MaxIdle: 16, MaxActive: 0, IdleTimeout: 300, Dial: func() (redis.Conn, error) { return redis.Dial("tcp", "localhost:6379") }, } } func main() { c := pool.Get() defer c.Close() _, err := c.Do("Set", "abc", 100) if err != nil { fmt.Println(err) return } r, err := redis.Int(c.Do("Get", "abc")) if err != nil { fmt.Println("get abc failed,", err) return } fmt.Println(r) pool.Close() }
相关文章
- 如何利用Redis突破性能极限(redis性能提升)
- Java实现Redis事务管理(redis事务java)
- 谁来支配Redis数量上限?(redis数量上限)
- 云存储基于SSO和Redis云存储的校园管理系统(sso实现redis)
- 比赛程序内读写Redis,谁能更快(程序内读写redis谁快)
- 使用YAF整合Redis打造更快速的WEB应用(yaf 整合redis)
- TP5新高度使用Redis缓存极大提升应用性能(tp5配置redis缓存)
- 使用协程提升Redis读写效率(协程读写redis)
- 破解连接服务器Redis的奥秘(如何连服务器的redis)
- 利用Redis实现缓存技术的升级(使用redis可以干嘛)
- 使用命令行安全设置Redis密码(命令设置redis密码)
- 破解Redis使用命令行登陆的最佳指南(命令登陆redis)
- 超级火爆商城使用Redis秒杀实现快速交易(商城秒杀redis实现)
- 使用Redis默认启动命令快速入门(redis默认启动命令)
- 实现高性能Redis集群管道操作策略(redis集群管道操作)
- 如何使用Redis集群实现高可用性(redis集群怎么用)
- Redis之速比Mam飞快(redis速度比mam快)
- 问题调查报告Redis 连接池悬而未决(redis 连接池不释放)
- 使用Redis连接查看工具提高开发效率(redis连接查看工具)
- 使用Redis命令快速迁移数据(redis迁移数据的命令)
- 使用Redis集群setnx实现原子性操作(redis集群setnx)
- 使用Redis前,设定地址及安全密码(redis设定地址密码)
- 如何正确使用Redis连接池(redis连接池怎么使用)