Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddCleanTask ¶
AddCleanTask adds a clean task on given keys.
func TotalWeights ¶
TotalWeights returns the total weights of given nodes.
Types ¶
type Cache ¶
type Cache interface { // Del deletes cached values with keys. Del(keys ...string) error // DelCtx deletes cached values with keys. DelCtx(ctx context.Context, keys ...string) error // Get gets the cache with key and fills into v. Get(key string, val interface{}) error // GetCtx gets the cache with key and fills into v. GetCtx(ctx context.Context, key string, val interface{}) error // IsNotFound checks if the given error is the defined errNotFound. IsNotFound(err error) bool // Set sets the cache with key and v, using c.expiry. Set(key string, val interface{}) error // SetCtx sets the cache with key and v, using c.expiry. SetCtx(ctx context.Context, key string, val interface{}) error // SetWithExpire sets the cache with key and v, using given expire. SetWithExpire(key string, val interface{}, expire time.Duration) error // SetWithExpireCtx sets the cache with key and v, using given expire. SetWithExpireCtx(ctx context.Context, key string, val interface{}, expire time.Duration) error // Take takes the result from cache first, if not found, // query from DB and set cache using c.expiry, then return the result. Take(val interface{}, key string, query func(val interface{}) error) error // TakeCtx takes the result from cache first, if not found, // query from DB and set cache using c.expiry, then return the result. TakeCtx(ctx context.Context, val interface{}, key string, query func(val interface{}) error) error // TakeWithExpire takes the result from cache first, if not found, // query from DB and set cache using given expire, then return the result. TakeWithExpire(val interface{}, key string, query func(val interface{}, expire time.Duration) error) error // TakeWithExpireCtx takes the result from cache first, if not found, // query from DB and set cache using given expire, then return the result. TakeWithExpireCtx(ctx context.Context, val interface{}, key string, query func(val interface{}, expire time.Duration) error) error }
Cache interface is used to define the cache implementation.
func New ¶
func New(c ClusterConf, barrier syncx.SingleFlight, st *Stat, errNotFound error, opts ...Option) Cache
New returns a Cache.
func NewNode ¶
func NewNode(rds *redis.Redis, barrier syncx.SingleFlight, st *Stat, errNotFound error, opts ...Option) Cache
NewNode returns a cacheNode. rds is the underlying redis node or cluster. barrier is the barrier that maybe shared with other cache nodes on cache cluster. st is used to stat the cache. errNotFound defines the error that returned on cache not found. opts are the options that customize the cacheNode.
type ClusterConf ¶
type ClusterConf []NodeConf
A ClusterConf is the config of a redis cluster that used as cache.
type Option ¶
type Option func(o *Options)
Option defines the method to customize an Options.
func WithExpiry ¶
WithExpiry returns a func to customize a Options with given expiry.
func WithNotFoundExpiry ¶
WithNotFoundExpiry returns a func to customize a Options with given not found expiry.
type Stat ¶
type Stat struct { // export the fields to let the unit tests working, // reside in internal package, doesn't matter. Total uint64 Hit uint64 Miss uint64 DbFails uint64 // contains filtered or unexported fields }
A Stat is used to stat the cache.
func (*Stat) IncrementDbFails ¶
func (s *Stat) IncrementDbFails()
IncrementDbFails increments the db fail count.
func (*Stat) IncrementMiss ¶
func (s *Stat) IncrementMiss()
IncrementMiss increments the miss count.
func (*Stat) IncrementTotal ¶
func (s *Stat) IncrementTotal()
IncrementTotal increments the total count.