一个简单的缓存库。
数据查询时会先命中第一层缓存,命中失败会从二级缓存等中读取至缓存中
数据会先写入持久化存储再自动存储至第一层缓存中
Lru是一种内存数据淘汰策略,最近最少被使用的数据最先被淘汰。使用cachex.NewMemLruCacheStroage创建Lru内存缓存存储。
Lfu是一种内存数据淘汰策略,使用频率最低的数据最先被淘汰。使用cachex.NewMemLfuCacheStroage创建Lfu内存缓存存储。
Fifo是一种内存数据淘汰策略,最先加入缓存的数据最先被淘汰。使用cachex.NewMemFifoCacheStroage创建Fifo内存缓存存储。
使用Redis进行存储,使用cachex.NewRedisCacheStroage创建Redis缓存存储。
使用LevelDB进行存储,使用cachex.NewLevelDBCacheStroage创建Redis缓存存储。
见example包
package main
import (
"fmt"
"github.com/lfhy/cachex"
)
// 内存缓存使用lru
// 远程缓存使用redis
func main() {
// 初始化缓存配置
lruCache := cachex.NewMemLruCacheStroage(30000)
redisCache := cachex.NewRedisCacheStroage(&cachex.RedisConfig{
Addr: "192.168.188.230:6379",
Password: "password",
DB: 4,
}, 0)
// 建立缓存
cache := cachex.NewCache(lruCache, redisCache)
// 设置缓存
cache.Set("hello", "world")
// 读取缓存
value, ok := cache.Get("hello")
if ok {
fmt.Printf("第一次从lru读取: %v\n", value)
} else {
fmt.Println("读取失败")
}
// Lru将缓存删除
lruCache.Delete("hello")
// 重新读取缓存
value, ok = cache.Get("hello")
if ok {
fmt.Printf("第二次从redis读: %v\n", value)
} else {
fmt.Println("读取失败")
}
}