赞
踩
redis是一个高性能的key-value数据库
redis特点:
1).支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
2).不仅仅支持简单的key-value类型的数据
还提供string、list(链表)、set(集合)、hash表等数据结构的存储
3).redis主持主从模式以及高可用模式
4). 性能极高,redis能支持十万次/s读写,单机能够达到15w qps
5).支持事务,redis的所有操作都是原子性的
1).安装redis
go get -u github.com/garyburd/redigo/redis
2).导入redis
import ( "github.com/garyburd/redigo/redis" )
3).链接redis
c, err := redis.Dial("tcp", "ip:port")
if err != nil {
fmt.Println("conn redis failed,", err)
return
}
fmt.Println("redis conn success")
defer c.Close()
4).redis的String结构操作
var pool *redis.Pool //创建redis连接池 var credis redis.Conn func init() { pool = &redis.Pool{ //实例化一个连接池 MaxIdle:16, //最初的连接数量 // MaxActive:1000000, //最大连接数量 MaxActive:0, //连接池最大连接数量,不确定可以用0(0表示自动定义),按需分配 IdleTimeout:300, //连接关闭时间 300秒 (300秒不使用自动关闭) Dial: func() (redis.Conn ,error){ //要连接的redis数据库 return redis.Dial("tcp","localhost:6379") }, } credis = pool.Get() //从连接池,取一个链接 } func main() { _, err := credis.Do("Set", "key", 100) //设置过期时间 _, _ = credis.Do("expire", "key", 10) if err != nil { fmt.Println(err) return } r, err := redis.Int(credis.Do("Get", "key")) if err != nil { fmt.Println("get abc failed,", err) return } fmt.Printf("get:%v",r) }
5).redis的List队列结构操作
lpush从左面入队列
_, err := credis.Do("lpush", "list", "a", "b", 300)
if err != nil {
fmt.Println(err)
return
}
lpop从右面出队列
r, err := redis.String(credis.Do("lpop", "list"))
if err != nil {
fmt.Println("get failed,", err)
return
}
fmt.Println(r)
6).redis的hash操作
func Hset(key string,value int) {
_, err := credis.Do("HSet", "hash_key", key, value)
if err != nil {
fmt.Println(err)
return
}
}
func Hget(key string) {
r, err := redis.Int(credis.Do("HGet", "hash_key", key))
if err != nil {
fmt.Println("get failed,", err)
return
}
fmt.Println(r)
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。