redisplus

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2020 License: MIT Imports: 10 Imported by: 1

README

go-redis

go-redis

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Close added in v1.0.1

func Close()

func DefaultClient

func DefaultClient()

DefaultClient returns a client with default options

func RedisSentinelClient added in v1.0.1

func RedisSentinelClient(options *SentinelOptions)

SetupSentinelClient returns a client with provided options

func RedisSignalClient added in v1.0.1

func RedisSignalClient(options *Options)

SetupClient returns a client with provided options

func TestRole

func TestRole(c redis.Conn, expectedRole string) bool

TestRole wraps GetRole in a test to verify if the role matches an expected role string. If there was any error in querying the supplied connection, the function returns false. Works with Redis >= 2.8.12. It's not goroutine safe, but if you call this method on pooled connections then you are OK.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client redis client

var RedisClient *Client

RedisClient Redis缓存客户端单例

func NewClient

func NewClient(pool *redis.Pool) *Client

NewClient returns a client using provided redis.Pool

func (*Client) Append

func (c *Client) Append(key string, value string) (int64, error)

Append to a key's value

func (*Client) Close

func (c *Client) Close() error

Close closes connections writePool

func (*Client) Decr

func (c *Client) Decr(key string) (int64, error)

Decr decrements the key's value

func (*Client) DecrBy

func (c *Client) DecrBy(key string, decrement int64) (int64, error)

DecrBy decrements the key's value by the decrement provided

func (*Client) DecrByFloat

func (c *Client) DecrByFloat(key string, decrement float64) (float64, error)

DecrByFloat decrements the key's value by the decrement provided

func (*Client) Del

func (c *Client) Del(keys ...string) (int64, error)

Del deletes keys

func (*Client) Echo

func (c *Client) Echo(message string) (string, error)

Echo echoes the message

func (*Client) Exists

func (c *Client) Exists(keys ...string) (bool, error)

Exists checks how many keys exist

func (*Client) Expire

func (c *Client) Expire(key string, timeout int64) (bool, error)

Expire sets a key's timeout in seconds

func (*Client) FlushAll

func (c *Client) FlushAll() error

FlushAll flushes the keys of all databases

func (*Client) FlushDb

func (c *Client) FlushDb() error

FlushDb flushes the keys of the current database

func (*Client) Get

func (c *Client) Get(key string) (string, bool, error)

Get retrieves a key's value

func (*Client) GetConnection

func (c *Client) GetConnection() redis.Conn

GetConnection gets a connection from the pool

func (*Client) GetRange

func (c *Client) GetRange(key string, start int, end int) (string, error)

GetRange to get a key's value's range

func (*Client) HDecr

func (c *Client) HDecr(key string, field string) (int64, error)

HDecr decrements the key's field's value

func (*Client) HDecrBy

func (c *Client) HDecrBy(key string, field string, decrement int64) (int64, error)

HDecrBy decrements the key's field's value by the decrement provided

func (*Client) HDecrByFloat

func (c *Client) HDecrByFloat(key string, field string, decrement float64) (float64, error)

HDecrByFloat decrements the key's field's value by the decrement provided

func (*Client) HDel

func (c *Client) HDel(key string, fields ...string) (int64, error)

HDel deletes a key's fields

func (*Client) HExists

func (c *Client) HExists(key string, field string) (bool, error)

HExists determine's a key's field's existence

func (*Client) HGet

func (c *Client) HGet(key string, field string) (string, bool, error)

HGet retrieves a key's field's value

func (*Client) HGetAll

func (c *Client) HGetAll(key string) (map[string]string, error)

HGetAll retrieves the key

func (*Client) HIncr

func (c *Client) HIncr(key string, field string) (int64, error)

HIncr increments the key's field's value

func (*Client) HIncrBy

func (c *Client) HIncrBy(key string, field string, increment int64) (int64, error)

HIncrBy increments the key's field's value by the increment provided

func (*Client) HIncrByFloat

func (c *Client) HIncrByFloat(key string, field string, increment float64) (float64, error)

HIncrByFloat increments the key's field's value by the increment provided

func (*Client) HKeys

func (c *Client) HKeys(key string) ([]string, error)

HKeys retrieves a hash's keys

func (*Client) HScan

func (c *Client) HScan(key string, startIndex int64, pattern string) (int64, []string, error)

HScan incrementally iterate over key's fields and values

func (*Client) HSet

func (c *Client) HSet(key string, field string, value string) (bool, error)

HSet sets a key's field/value pair

func (*Client) Incr

func (c *Client) Incr(key string) (int64, error)

Incr increments the key's value

func (*Client) IncrBy

func (c *Client) IncrBy(key string, increment int64) (int64, error)

IncrBy increments the key's value by the increment provided

func (*Client) IncrByFloat

func (c *Client) IncrByFloat(key string, increment float64) (float64, error)

IncrByFloat increments the key's value by the increment provided

func (*Client) Info

func (c *Client) Info() (string, error)

Info returns redis information and statistics

func (*Client) Keys

func (c *Client) Keys(pattern string) ([]string, error)

Keys retrieves keys that match a pattern

func (*Client) Ping

func (c *Client) Ping() (string, error)

Ping pings redis

func (*Client) Scan

func (c *Client) Scan(startIndex int64, pattern string) (int64, []string, error)

Scan incrementally iterate over keys

func (*Client) Set

func (c *Client) Set(key string, value string) (bool, error)

Set sets a key/value pair

func (*Client) SetEx

func (c *Client) SetEx(key string, value string, timeout int64) (bool, error)

SetEx sets a key/value pair with a timeout in seconds

func (*Client) SetNx

func (c *Client) SetNx(key string, value string) (bool, error)

SetNx sets a key/value pair if the key does not exist

func (*Client) SetRange

func (c *Client) SetRange(key string, start int, value string) (int64, error)

SetRange to set a key's value's range

type NoSentinelsAvailable

type NoSentinelsAvailable struct {
	// contains filtered or unexported fields
}

NoSentinelsAvailable is returned when all sentinels in the list are exhausted (or none configured), and contains the last error returned by Dial (which may be nil)

func (NoSentinelsAvailable) Error

func (ns NoSentinelsAvailable) Error() string

type Options

type Options struct {
	Host                  string
	Port                  int
	Password              string
	Database              int
	Network               string
	ConnectTimeout        time.Duration
	WriteTimeout          time.Duration
	ReadTimeout           time.Duration
	ConnectionIdleTimeout time.Duration
	ConnectionMaxIdle     int
	ConnectionMaxActive   int
	ConnectionWait        bool
	TlsConfig             *tls.Config
	TlsSkipVerify         bool
	TestOnBorrowPeriod    time.Duration
}

Options contains redis options

func (*Options) GetAddress

func (o *Options) GetAddress() string

GetAddress returns address

func (*Options) GetConnectTimeout

func (o *Options) GetConnectTimeout() time.Duration

GetConnectTimeout returns connect timeout

func (*Options) GetConnectionIdleTimeout

func (o *Options) GetConnectionIdleTimeout() time.Duration

GetConnectionIdleTimeout returns connection idle timeout

func (*Options) GetConnectionMaxActive

func (o *Options) GetConnectionMaxActive() int

GetConnectionMaxActive returns connection max active

func (*Options) GetConnectionMaxIdle

func (o *Options) GetConnectionMaxIdle() int

GetConnectionMaxIdle returns connection max idle

func (*Options) GetConnectionWait

func (o *Options) GetConnectionWait() bool

GetConnectionWait returns connection wait

func (*Options) GetDatabase

func (o *Options) GetDatabase() int

GetDatabase returns database

func (*Options) GetHost

func (o *Options) GetHost() string

GetHost returns host

func (*Options) GetNetwork

func (o *Options) GetNetwork() string

GetNetwork returns network

func (*Options) GetPassword

func (o *Options) GetPassword() string

GetPassword returns password

func (*Options) GetPort

func (o *Options) GetPort() int

GetPort returns port

func (*Options) GetReadTimeout

func (o *Options) GetReadTimeout() time.Duration

GetReadTimeout returns read timeout

func (*Options) GetTestOnBorrowPeriod

func (o *Options) GetTestOnBorrowPeriod() time.Duration

GetTestOnBorrowPeriod return test on borrow period

func (*Options) GetTlsConfig

func (o *Options) GetTlsConfig() *tls.Config

GetTlsConfig returns tls config

func (*Options) GetTlsSkipVerify

func (o *Options) GetTlsSkipVerify() bool

GetTlsSkipVerify returns tls skip verify

func (*Options) GetWriteTimeout

func (o *Options) GetWriteTimeout() time.Duration

GetWriteTimeout returns write timeout

type Sentinel

type Sentinel struct {
	// Addrs is a slice with known Sentinel addresses.
	Addrs []string

	// MasterName is a name of Redis master Sentinel servers monitor.
	MasterName string

	// Dial is a user supplied function to connect to Sentinel on given address. This
	// address will be chosen from Addrs slice.
	// Note that as per the redis-sentinel client guidelines, a timeout is mandatory
	// while connecting to Sentinels, and should not be set to 0.
	Dial func(addr string) (redis.Conn, error)

	// Pool is a user supplied function returning custom connection pool to Sentinel.
	// This can be useful to tune options if you are not satisfied with what default
	// Sentinel pool offers. See defaultPool() method for default pool implementation.
	// In most cases you only need to provide Dial function and let this be nil.
	Pool func(addr string) *redis.Pool
	// contains filtered or unexported fields
}

Sentinel provides a way to add high availability (HA) to Redis Pool using preconfigured addresses of Sentinel servers and name of master which Sentinels monitor. It works with Redis >= 2.8.12 (mostly because of ROLE command that was introduced in that version, it's possible though to support old versions using INFO command).

Example of the simplest usage to contact master "mymaster":

func newSentinelPool() *redis.Pool {
	sntnl := &sentinel.Sentinel{
		Addrs:      []string{":26379", ":26380", ":26381"},
		MasterName: "mymaster",
		Dial: func(addr string) (redis.Conn, error) {
			timeout := 500 * time.Millisecond
			c, err := redis.DialTimeout("tcp", addr, timeout, timeout, timeout)
			if err != nil {
				return nil, err
			}
			return c, nil
		},
	}
	return &redis.Pool{
		MaxIdle:     3,
		MaxActive:   64,
		Wait:        true,
		IdleTimeout: 240 * time.Second,
		Dial: func() (redis.Conn, error) {
			masterAddr, err := sntnl.MasterAddr()
			if err != nil {
				return nil, err
			}
			c, err := redis.Dial("tcp", masterAddr)
			if err != nil {
				return nil, err
			}
			return c, nil
		},
		TestOnBorrow: func(c redis.Conn, t time.Time) error {
			if !sentinel.TestRole(c, "master") {
				return errors.New("Role check failed")
			} else {
				return nil
			}
		},
	}
}

func (*Sentinel) Close

func (s *Sentinel) Close() error

Close closes current connection to Sentinel.

func (*Sentinel) Discover

func (s *Sentinel) Discover() error

Discover allows to update list of known Sentinel addresses. From docs:

A client may update its internal list of Sentinel nodes following this procedure: 1) Obtain a list of other Sentinels for this master using the command SENTINEL sentinels <master-name>. 2) Add every ip:port pair not already existing in our list at the end of the list.

func (*Sentinel) MasterAddr

func (s *Sentinel) MasterAddr() (string, error)

MasterAddr returns an address of current Redis master instance.

func (*Sentinel) SentinelAddrs

func (s *Sentinel) SentinelAddrs() ([]string, error)

SentinelAddrs returns a slice of known Sentinel addresses Sentinel server aware of.

func (*Sentinel) SlaveAddrs

func (s *Sentinel) SlaveAddrs() ([]string, error)

SlaveAddrs returns a slice with known slave addresses of current master instance.

func (*Sentinel) Slaves

func (s *Sentinel) Slaves() ([]*Slave, error)

Slaves returns a slice with known slaves of master instance.

type SentinelOptions

type SentinelOptions struct {
	Addresses             []string
	MasterName            string
	Password              string
	Database              int
	Network               string
	ConnectTimeout        time.Duration
	WriteTimeout          time.Duration
	ReadTimeout           time.Duration
	ConnectionIdleTimeout time.Duration
	ConnectionMaxIdle     int
	ConnectionMaxActive   int
	ConnectionWait        bool
	TlsConfig             *tls.Config
	TlsSkipVerify         bool
	TestOnBorrowPeriod    time.Duration
}

SentinelOptions contains redis sentinel options

func (*SentinelOptions) GetAddresses

func (o *SentinelOptions) GetAddresses() []string

GetAddresses returns sentinel address

func (*SentinelOptions) GetConnectTimeout

func (o *SentinelOptions) GetConnectTimeout() time.Duration

GetConnectTimeout returns connect timeout

func (*SentinelOptions) GetConnectionIdleTimeout

func (o *SentinelOptions) GetConnectionIdleTimeout() time.Duration

GetConnectionIdleTimeout returns connection idle timeout

func (*SentinelOptions) GetConnectionMaxActive

func (o *SentinelOptions) GetConnectionMaxActive() int

GetConnectionMaxActive returns connection max active

func (*SentinelOptions) GetConnectionMaxIdle

func (o *SentinelOptions) GetConnectionMaxIdle() int

GetConnectionMaxIdle returns connection max idle

func (*SentinelOptions) GetConnectionWait

func (o *SentinelOptions) GetConnectionWait() bool

GetConnectionWait returns connection wait

func (*SentinelOptions) GetDatabase

func (o *SentinelOptions) GetDatabase() int

GetDatabase returns database

func (*SentinelOptions) GetMasterName

func (o *SentinelOptions) GetMasterName() string

GetMasterName returns master name

func (*SentinelOptions) GetNetwork

func (o *SentinelOptions) GetNetwork() string

GetNetwork returns network

func (*SentinelOptions) GetPassword

func (o *SentinelOptions) GetPassword() string

GetPassword returns password

func (*SentinelOptions) GetReadTimeout

func (o *SentinelOptions) GetReadTimeout() time.Duration

GetReadTimeout returns read timeout

func (*SentinelOptions) GetTestOnBorrowPeriod

func (o *SentinelOptions) GetTestOnBorrowPeriod() time.Duration

GetTestOnBorrowPeriod return test on borrow period

func (*SentinelOptions) GetTlsConfig

func (o *SentinelOptions) GetTlsConfig() *tls.Config

GetTlsConfig returns tls config

func (*SentinelOptions) GetTlsSkipVerify

func (o *SentinelOptions) GetTlsSkipVerify() bool

GetTlsSkipVerify returns tls skip verify

func (*SentinelOptions) GetWriteTimeout

func (o *SentinelOptions) GetWriteTimeout() time.Duration

GetWriteTimeout returns write timeout

type Slave

type Slave struct {
	// contains filtered or unexported fields
}

Slave represents a Redis slave instance which is known by Sentinel.

func (*Slave) Addr

func (s *Slave) Addr() string

Addr returns an address of slave.

func (*Slave) Available

func (s *Slave) Available() bool

Available returns if slave is in working state at moment based on information in slave flags.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL