Documentation ¶
Index ¶
- func Cache(ctx context.Context, c Conner, key string, expiration time.Duration, ...) (_ interface{}, found bool, _ error)
- func CreateKey(prefix bool, sep string, visual string, args ...interface{}) string
- func CreateKeyStruct(strct interface{}) string
- func Hash(key string) string
- type Cacher
- type Conner
- type Logger
- type Options
- type SlowRetrieve
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Cache ¶
func Cache(ctx context.Context, c Conner, key string, expiration time.Duration, fn SlowRetrieve, options ...Options) (_ interface{}, found bool, _ error)
Cache is used to return a cached value. If it's not available, fn will be called to obtain a value. Subsequently, fn's value will be saved into the cache.
func CreateKey ¶
CreateKey will generate a key based on the input arguments. When prefix is true, the caller's name will be used to prefix the key in an attempt to make it unique. The args can also be separated using sep. visual performs no functionality. It is used at code level to visually see how the key is structured.
func CreateKeyStruct ¶
func CreateKeyStruct(strct interface{}) string
CreateKeyStruct generates a key by converting a struct into a JSON object.
Types ¶
type Cacher ¶
type Cacher interface { // StorePointer sets whether a storage driver requires itemToStore to be // stored as a pointer or as a concrete value. StorePointer() bool // Get returns a value from the cache if the key exists. Get(key string) (item interface{}, found bool, err error) // Set sets a item into the cache for a particular key. Set(key string, expiration time.Duration, itemToStore interface{}) error // Close returns the connection back to the pool for storage drivers that utilize a pool. Close() // Forget clears the value from the cache for the particular key. Forget(key string) error // ForgetAll clears all values from the cache. ForgetAll() error }
Cacher is the interface that all storage drivers must implement.
type Conner ¶
Conner allows a storage driver to provide a connection from the pool in order to communicate with it.
type Logger ¶
type Logger interface { // Log follows the same pattern as fmt.Printf( ). Log(format string, args ...interface{}) }
Logger provides an interface to log extra debug information. The glog package can be used or alternatively you can defined your own.
Example:
import log type aLogger struct {} func (l aLogger) Log(format string, args ...interface{}) { log.Printf(format, args...) }
type Options ¶
type Options struct { // DisableCacheUsage disables the cache. // It can be useful during debugging. DisableCacheUsage bool // UseFreshData will ignore content in the cache and always pull fresh data. // The pulled data will subsequently be saved in the cache. UseFreshData bool // Logger, when set, will log error and debug messages. Logger Logger // OnlyLogErrors, when set, will only log errors (but not debug messages). // For production, this should be set to true. OnlyLogErrors bool // GobRegister registers with the gob encoder the data type returned by the // SlowRetrieve function. // Some storage drivers may require this to be set. // Setting this to true will slightly impact concurrency performance. // It is usually better to set this to false, but register all structs // inside an init(). Otherwise you will encounter complaints from the gob package // if a Logger is provided. // See: https://golang.org/pkg/encoding/gob/#Register GobRegister bool }
Options is used to change caching behavior.
type SlowRetrieve ¶
SlowRetrieve obtains a result when the key is not found in the cache. It is usually (but not limited to) a query to a database with some additional processing of the returned data. The function must return a value that is compatible with the gob package for some storage drivers.