Documentation ¶
Overview ¶
redis 封装包 主要引用 github.com/garyburd/redigo/redis
一、自定义Pool 不用github.com/garyburd/redigo/redis包中原有的pool功能。而已重新实现pool功能。 新的pool主要参考github.com/fzzy/radix中的pool的功能,通过golang的channel来实现, 非常漂亮;同时,pool的Put看起来非常清晰;总体实现比较优雅。
例子:
dialFunc := func(config PoolConfig) (c redis.Conn, err error) { c, err = redis.Dial(config.Network, config.Address) if err != nil { return nil, err } if config.password != "" { if _, err := c.Do("AUTH", config.Password); err != nil { c.Close() return nil, err } } _, selecterr := c.Do("SELECT", config.DbNum) if selecterr != nil { c.Close() return nil, selecterr } return } config=PoolConfig{ Network :"tcp", Address : "127.0.0.1:6379", MaxIdle :10, Password :"123456", DbNum :0, Df :dialFunc, } redis, _ := NewRedisPool(config)
Index ¶
- Variables
- type Pool
- type PoolConfig
- type RedisPool
- func (rp *RedisPool) Append(key, val string) (int, error)
- func (rp *RedisPool) BLPop(key string, timeout int64) (map[string]string, error)
- func (rp *RedisPool) BLPopMulti(timeout int64, keys ...interface{}) (map[string]string, error)
- func (rp *RedisPool) BRPop(key string, timeout int64) (map[string]string, error)
- func (rp *RedisPool) BRPopMulti(timeout int64, keys ...interface{}) (map[string]string, error)
- func (rp *RedisPool) Close() error
- func (rp *RedisPool) Decr(key string) (int64, error)
- func (rp *RedisPool) Del(key string) (int, error)
- func (rp *RedisPool) Do(commandName string, args ...interface{}) (reply interface{}, err error)
- func (rp *RedisPool) Expire(key string, expired int64) (int, error)
- func (rp *RedisPool) Get(key string) (string, error)
- func (rp *RedisPool) GetConn() (redis.Conn, error)
- func (rp *RedisPool) GetJson(key string, reply interface{}) (err error)
- func (rp *RedisPool) HDel(key string, field ...interface{}) (int, error)
- func (rp *RedisPool) HGet(key, field string) (string, error)
- func (rp *RedisPool) HGetAll(key string) (map[string]string, error)
- func (rp *RedisPool) HLen(key string) (int, error)
- func (rp *RedisPool) HMSet(key string, field_value ...interface{}) error
- func (rp *RedisPool) HSet(key, field, value string) (int, error)
- func (rp *RedisPool) Incr(key string) (int64, error)
- func (rp *RedisPool) LLen(key string) (int64, error)
- func (rp *RedisPool) LPop(key string) (string, error)
- func (rp *RedisPool) LPush(key string, values ...interface{}) (int64, error)
- func (rp *RedisPool) LPushX(key string, value interface{}) (int64, error)
- func (rp *RedisPool) LRange(key string, start, stop int64) ([]string, error)
- func (rp *RedisPool) LRem(key string, count int64, value string) (int64, error)
- func (rp *RedisPool) LSet(key string, index int64, value string) error
- func (rp *RedisPool) LTrim(key string, start, stop int64) error
- func (rp *RedisPool) PExpire(key string, expired int64) (int, error)
- func (rp *RedisPool) PutConn(conn redis.Conn) error
- func (rp *RedisPool) RPop(key string) (string, error)
- func (rp *RedisPool) RPush(key string, values ...interface{}) (int64, error)
- func (rp *RedisPool) RPushX(key string, value interface{}) (int64, error)
- func (rp *RedisPool) Set(key, val string) error
- func (rp *RedisPool) SetEx(key, val string, expired int64) error
- func (rp *RedisPool) SetExJson(key string, val interface{}, expired int64) (err error)
- func (rp *RedisPool) SetJson(key string, val interface{}) (err error)
- func (rp *RedisPool) SetPowerOn(powerOn bool) *RedisPool
Constants ¶
This section is empty.
Variables ¶
Functions ¶
This section is empty.
Types ¶
type Pool ¶
type Pool struct {
// contains filtered or unexported fields
}
池 获取一个可用的redis连接。 如果没有可用的它将新建一个redis连接 主要方法:
pool.Get() 从池中获取连接 pool.Put() 重新放回池中
func NewPool ¶
func NewPool(config PoolConfig) (*Pool, error)
新建池
例子:
dialFunc := func(config PoolConfig) (c redis.Conn, err error) {
c, err = redis.Dial(config.Network, config.Address)
if err != nil { return nil, err }
if config.Password != "" { if _, err := c.Do("AUTH", config.Password); err != nil { c.Close() return nil, err } }
_, selecterr := c.Do("SELECT", config.DbNum)
if selecterr != nil { c.Close() return nil, selecterr }
return }
config := PoolConfig{ Network :"tcp", Address : "127.0.0.1:6379", MaxIdle :10, Password :"123456", DbNum :0, Df :dialFunc, }
p, _ := NewPool(config)
type PoolConfig ¶
type PoolConfig struct { Network string Address string MaxIdle int DbNum int Password string IdleTimeout time.Duration ReadTimeout time.Duration WriteTimeout time.Duration ConnectTimeout time.Duration Df func(config PoolConfig) (redis.Conn, error) }
配置信息
type RedisPool ¶
type RedisPool struct {
// contains filtered or unexported fields
}
内部使用了池功能
func (*RedisPool) Append ¶
APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。 否则,新建key/value
func (*RedisPool) BLPopMulti ¶
BLPOP key1 [key2 ] timeout(秒) 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
func (*RedisPool) BRPopMulti ¶
BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
func (*RedisPool) HMSet ¶
HMSET key field1 value1 [field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中。
func (*RedisPool) LRem ¶
LREM key count value 移除列表元素 Redis Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
COUNT 的值可以是以下几种: count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。 count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。 count = 0 : 移除表中所有与 VALUE 相等的值。
func (*RedisPool) LTrim ¶
LTRIM key start stop Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
func (*RedisPool) SetEx ¶
SETEX key seconds value 将值 value 关联到 key , 并将 key 的过期时间设为 seconds (以秒为单位)。 @expired 有效时长 (以秒为单位)