package memory import ( "github.com/allegro/bigcache" "time" ) var ForexCache *bigcache.BigCache // 外汇行情缓存 // NewBigCache // // @Description: 初始化交易-实时数据缓存 // @return *bigcache.BigCache func NewBigCache() *bigcache.BigCache { config := bigcache.Config{ // Set the number of partitions, which must be an integer multiple of 2 Shards: 1024, // After LifeWindow, cached objects are considered inactive, but they are not deleted LifeWindow: 180 * time.Second, // After CleanWindow, objects that are considered inactive will be deleted, with 0 representing no operation CleanWindow: 150 * time.Second, // Set the maximum number of storage objects, which can only be set during initialization //MaxEntriesInWindow: 1000 * 10 * 60, MaxEntriesInWindow: 1, // The maximum number of bytes for cache objects, which can only be set during initialization MaxEntrySize: 500, // Print memory allocation information Verbose: true, // Set the maximum cache value (in MB), where 0 represents unlimited HardMaxCacheSize: 0, //8192 // When the cache expires or is deleted, a callback function can be set with parameters (key, val), and the default is nil OnRemove: nil, // When the cache expires or is deleted, a callback function can be set with parameters such as (key, val, reason). The default setting is nil and not set OnRemoveWithReason: nil, } cache, err := bigcache.NewBigCache(config) if err != nil { return nil } return cache } func init() { ForexCache = NewBigCache() } // GetForexCache // // @Description: 外汇买一卖一行情 // @param key // @return []byte // @return error func GetForexCache(key string) ([]byte, error) { conP, err := ForexCache.Get(key) if err != nil { return conP, nil } return conP, err }