Documentation
¶
Overview ¶
- @Author: your name
- @Date: 2022-01-13 17:16:43
- @LastEditTime: 2022-01-16 16:06:06
- @LastEditors: Please set LastEditors
- @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
- @FilePath: /IAM/pkg/storage/redis_cluster.go
Package storage defines redis storage.
Index ¶
- Constants
- Variables
- func ConnectToRedis(ctx context.Context, config *Config)
- func Connected() bool
- func DisableRedis(ok bool)
- func GenerateToken(orgID, keyID, hashAlgorithm string) (string, error)
- func HashKey(in string) string
- func HashStr(in string) string
- func NewRedisClusterPool(config *Config) redis.UniversalClient
- func TokenHashAlgo(token string) string
- func TokenOrg(token string) string
- type AnalyticsHandler
- type Config
- type Handler
- type RedisCluster
- func (r *RedisCluster) AddToSet(keyName, value string)
- func (r *RedisCluster) AddToSortedSet(keyName, value string, score float64)
- func (r *RedisCluster) AppendToSet(keyName, value string)
- func (r *RedisCluster) AppendToSetPipelined(key string, values [][]byte)
- func (r *RedisCluster) Connect() bool
- func (r *RedisCluster) Decrement(keyName string)
- func (r *RedisCluster) DeleteAllKeys() bool
- func (r *RedisCluster) DeleteKey(keyName string) bool
- func (r *RedisCluster) DeleteKeys(keys []string) bool
- func (r *RedisCluster) DeleteScanMatch(pattern string) bool
- func (r *RedisCluster) Exists(keyName string) (bool, error)
- func (r *RedisCluster) GetAndDeleteSet(keyName string) []interface{}
- func (r *RedisCluster) GetExp(keyName string) (int64, error)
- func (r *RedisCluster) GetKey(keyName string) (string, error)
- func (r *RedisCluster) GetKeyPrefix() string
- func (r *RedisCluster) GetKeyTTL(keyName string) (ttl int64, err error)
- func (r *RedisCluster) GetKeys(filter string) []string
- func (r *RedisCluster) GetKeysAndValues() map[string]string
- func (r *RedisCluster) GetKeysAndValuesWithFilter(filter string) map[string]string
- func (r *RedisCluster) GetListRange(keyName string, from, to int64) ([]string, error)
- func (r *RedisCluster) GetMultiKey(keys []string) ([]string, error)
- func (r *RedisCluster) GetRawKey(keyName string) (string, error)
- func (r RedisCluster) GetRollingWindow(keyName string, per int64, pipeline bool) (int, []interface{})
- func (r *RedisCluster) GetSet(keyName string) (map[string]string, error)
- func (r *RedisCluster) GetSortedSetRange(keyName, scoreFrom, scoreTo string) ([]string, []float64, error)
- func (r *RedisCluster) IncrememntWithExpire(keyName string, expire int64) int64
- func (r *RedisCluster) IsMemberOfSet(keyName, value string) bool
- func (r *RedisCluster) Publish(channel, message string) error
- func (r *RedisCluster) RemoveFromList(keyName, value string) error
- func (r *RedisCluster) RemoveFromSet(keyName, value string)
- func (r *RedisCluster) RemoveSortedSetRange(keyName, scoreFrom, scoreTo string) error
- func (r *RedisCluster) SetExp(keyName string, timeout time.Duration) error
- func (r *RedisCluster) SetKey(keyName, session string, timeout time.Duration) error
- func (r *RedisCluster) SetRawKey(keyName, session string, timeout time.Duration) error
- func (r *RedisCluster) SetRollingWindow(keyName string, per int64, valueOverride string, pipeline bool) (int, []interface{})
- func (r *RedisCluster) StartPubSubHandler(channel string, callback func(interface{})) error
Constants ¶
const B64JSONPrefix = "ey"
B64JSONPrefix stand for `{"` in base64.
Variables ¶
var ( HashSha256 = "sha256" HashMurmur32 = "murmur32" HashMurmur64 = "murmur64" HashMurmur128 = "murmur128" )
Defines algorithm constant.
var ErrKeyNotFound = errors.New("key not found")
ErrKeyNotFound is a standard error for when a key is not found in the storage engine.
var ErrRedisIsDown = errors.New("storage: Redis is either down or was not configured")
Functions ¶
func ConnectToRedis ¶
ConnectToRedis periodically tries to connect to redis. It should be called in a goroutine.
func DisableRedis ¶
func DisableRedis(ok bool)
func GenerateToken ¶
GenerateToken generate token, if hashing algorithm is empty, use legacy key generation.
func NewRedisClusterPool ¶
func NewRedisClusterPool(config *Config) redis.UniversalClient
NewRedisClusterPool create a redis connection pool.
Types ¶
type AnalyticsHandler ¶
type AnalyticsHandler interface { Connect() bool AppendToSetPipelined(string, [][]byte) GetAndDeleteSet(string) []interface{} SetExp(string, time.Duration) error // Set key expiration GetExp(string) (int64, error) // Returns expiry of a key }
AnalyticsHandler defines the interface for analytics.
type Config ¶
type Config struct { Host string // hostname or ip of your Redis server Port int // the port the Redis server is listening on Addrs []string // a set of redis address(format: 127.0.0.1:6379) MasterName string // the sentinel master name, only failover clients Username string // auth username at cloud redis service Password string // auth password Database int // db which to be select MaxIdle int // max idle connections MaxActive int // max active connections Timeout int // timeout (in seconds) when connecting to redis service EnableCluster bool // enable cluster client when using Redis cluster UseSSL bool // enable ssl encrypted connections SSLInsecureSkipVerify bool // whether a client verifies the server'scertificate chain and host name }
Config defines options for redis either clusters, or sentinel-backed failover instances or simple single-instance servers.
type Handler ¶
type Handler interface { GetKey(string) (string, error) // Returned string is expected to be a JSON object (user.SessionState) GetMultiKey([]string) ([]string, error) GetRawKey(string) (string, error) SetKey(string, string, int64) error // Second input string is expected to be a JSON object (user.SessionState) SetRawKey(string, string, int64) error SetExp(string, int64) error // Set key expiration GetExp(string) (int64, error) // Returns expiry of a key GetKeys(string) []string DeleteKey(string) bool DeleteAllKeys() bool DeleteRawKey(string) bool Connect() bool GetKeysAndValues() map[string]string GetKeysAndValuesWithFilter(string) map[string]string DeleteKeys([]string) bool Decrement(string) IncrememntWithExpire(string, int64) int64 SetRollingWindow(key string, per int64, val string, pipeline bool) (int, []interface{}) GetRollingWindow(key string, per int64, pipeline bool) (int, []interface{}) GetSet(string) (map[string]string, error) AddToSet(string, string) GetAndDeleteSet(string) []interface{} RemoveFromSet(string, string) DeleteScanMatch(string) bool GetKeyPrefix() string AddToSortedSet(string, string, float64) GetSortedSetRange(string, string, string) ([]string, []float64, error) RemoveSortedSetRange(string, string, string) error GetListRange(string, int64, int64) ([]string, error) RemoveFromList(string, string) error AppendToSet(string, string) Exists(string) (bool, error) }
Handler is a standard interface to a storage backend, used by AuthorisationManager to read and write key values to the backend.
type RedisCluster ¶
RedisCluster is a storage manager that uses the redis database.
func (*RedisCluster) AddToSet ¶
func (r *RedisCluster) AddToSet(keyName, value string)
AddToSet add value to key set.
func (*RedisCluster) AddToSortedSet ¶
func (r *RedisCluster) AddToSortedSet(keyName, value string, score float64)
AddToSortedSet adds value with given score to sorted set identified by keyName.
func (*RedisCluster) AppendToSet ¶
func (r *RedisCluster) AppendToSet(keyName, value string)
AppendToSet append a value to the key set.
func (*RedisCluster) AppendToSetPipelined ¶
func (r *RedisCluster) AppendToSetPipelined(key string, values [][]byte)
AppendToSetPipelined append values to redis pipeline.
func (*RedisCluster) Connect ¶
func (r *RedisCluster) Connect() bool
Connect will establish a connection this is always true because we are dynamically using redis.
func (*RedisCluster) Decrement ¶
func (r *RedisCluster) Decrement(keyName string)
Decrement will decrement a key in redis.
func (*RedisCluster) DeleteAllKeys ¶
func (r *RedisCluster) DeleteAllKeys() bool
DeleteAllKeys will remove all keys from the database.
func (*RedisCluster) DeleteKey ¶
func (r *RedisCluster) DeleteKey(keyName string) bool
DeleteKey will remove a key from the database.
func (*RedisCluster) DeleteKeys ¶
func (r *RedisCluster) DeleteKeys(keys []string) bool
DeleteKeys will remove a group of keys in bulk.
func (*RedisCluster) DeleteScanMatch ¶
func (r *RedisCluster) DeleteScanMatch(pattern string) bool
DeleteScanMatch will remove a group of keys in bulk.
func (*RedisCluster) Exists ¶
func (r *RedisCluster) Exists(keyName string) (bool, error)
Exists check if keyName exists.
func (*RedisCluster) GetAndDeleteSet ¶
func (r *RedisCluster) GetAndDeleteSet(keyName string) []interface{}
GetAndDeleteSet get and delete a key.
func (*RedisCluster) GetExp ¶
func (r *RedisCluster) GetExp(keyName string) (int64, error)
GetExp return the expiry of the given key.
func (*RedisCluster) GetKey ¶
func (r *RedisCluster) GetKey(keyName string) (string, error)
GetKey will retrieve a key from the database.
func (*RedisCluster) GetKeyPrefix ¶
func (r *RedisCluster) GetKeyPrefix() string
GetKeyPrefix returns storage key prefix.
func (*RedisCluster) GetKeyTTL ¶
func (r *RedisCluster) GetKeyTTL(keyName string) (ttl int64, err error)
GetKeyTTL return ttl of the given key.
func (*RedisCluster) GetKeys ¶
func (r *RedisCluster) GetKeys(filter string) []string
GetKeys will return all keys according to the filter (filter is a prefix - e.g. tyk.keys.*).
func (*RedisCluster) GetKeysAndValues ¶
func (r *RedisCluster) GetKeysAndValues() map[string]string
GetKeysAndValues will return all keys and their values - not to be used lightly.
func (*RedisCluster) GetKeysAndValuesWithFilter ¶
func (r *RedisCluster) GetKeysAndValuesWithFilter(filter string) map[string]string
GetKeysAndValuesWithFilter will return all keys and their values with a filter.
func (*RedisCluster) GetListRange ¶
func (r *RedisCluster) GetListRange(keyName string, from, to int64) ([]string, error)
GetListRange gets range of elements of list identified by keyName.
func (*RedisCluster) GetMultiKey ¶
func (r *RedisCluster) GetMultiKey(keys []string) ([]string, error)
GetMultiKey gets multiple keys from the database.
func (*RedisCluster) GetRawKey ¶
func (r *RedisCluster) GetRawKey(keyName string) (string, error)
GetRawKey return the value of the given key.
func (RedisCluster) GetRollingWindow ¶
func (r RedisCluster) GetRollingWindow(keyName string, per int64, pipeline bool) (int, []interface{})
GetRollingWindow return rolling window.
func (*RedisCluster) GetSet ¶
func (r *RedisCluster) GetSet(keyName string) (map[string]string, error)
GetSet return key set value.
func (*RedisCluster) GetSortedSetRange ¶
func (r *RedisCluster) GetSortedSetRange(keyName, scoreFrom, scoreTo string) ([]string, []float64, error)
GetSortedSetRange gets range of elements of sorted set identified by keyName.
func (*RedisCluster) IncrememntWithExpire ¶
func (r *RedisCluster) IncrememntWithExpire(keyName string, expire int64) int64
IncrememntWithExpire will increment a key in redis.
func (*RedisCluster) IsMemberOfSet ¶
func (r *RedisCluster) IsMemberOfSet(keyName, value string) bool
IsMemberOfSet return whether the given value belong to key set.
func (*RedisCluster) Publish ¶
func (r *RedisCluster) Publish(channel, message string) error
Publish publish a message to the specify channel.
func (*RedisCluster) RemoveFromList ¶
func (r *RedisCluster) RemoveFromList(keyName, value string) error
RemoveFromList delete an value from a list idetinfied with the keyName.
func (*RedisCluster) RemoveFromSet ¶
func (r *RedisCluster) RemoveFromSet(keyName, value string)
RemoveFromSet remove a value from key set.
func (*RedisCluster) RemoveSortedSetRange ¶
func (r *RedisCluster) RemoveSortedSetRange(keyName, scoreFrom, scoreTo string) error
RemoveSortedSetRange removes range of elements from sorted set identified by keyName.
func (*RedisCluster) SetExp ¶
func (r *RedisCluster) SetExp(keyName string, timeout time.Duration) error
SetExp set expiry of the given key.
func (*RedisCluster) SetKey ¶
func (r *RedisCluster) SetKey(keyName, session string, timeout time.Duration) error
SetKey will create (or update) a key value in the store.
func (*RedisCluster) SetRawKey ¶
func (r *RedisCluster) SetRawKey(keyName, session string, timeout time.Duration) error
SetRawKey set the value of the given key.
func (*RedisCluster) SetRollingWindow ¶
func (r *RedisCluster) SetRollingWindow( keyName string, per int64, valueOverride string, pipeline bool, ) (int, []interface{})
SetRollingWindow will append to a sorted set in redis and extract a timed window of values.
func (*RedisCluster) StartPubSubHandler ¶
func (r *RedisCluster) StartPubSubHandler(channel string, callback func(interface{})) error