代码拉取完成,页面将自动刷新
distributed cache running in project
在项目中运行的分布式缓存
go get github.com/wuyan94zl/go-cache
// 引入缓存包
import "github.com/wuyan94zl/go-cache"
// 实例化单机版缓存服务
cache.Default(nil)
// 实例化分布式版缓存服务
cache.Default(&cache.Config{
MaxLen: 100000, // 缓存长度 默认10000
BackupInterval: 1, // 缓存备份间隔时间 1分钟备份一次(默认60分钟),备份文件保存在根目录 db 文件中,启动或重启时会自动把备份的db数据同步到内存缓存中
// 远程节点基于grpc方式交互的分布式缓存配置
Grpc: &cache.GrpcConfig{
Port: "8888", // 当前服务监听端口
CurrentHost: "localhost:8888", // 当前服务Grpc地址
AllHosts: []string{"localhost:8811", "localhost:8821"}, // 所有服务Grpc地址 直连需要手动配置
},
})
// 操作使用
// 设置一个键为test值为value的缓存,60秒后过期
cache.Instance.Set("test", "value", 60)
// 获取键为test的缓存值
cache.Instance.Get("test")
// 设置一个键为test_nx值为value的缓存,60秒后过期,返回true。如果键test_nx缓存存在则不操作返回false
cache.Instance.SetNX("test_nx", "value", 60)
// 获取一个键为cache_key的缓存值,不存在则调用回调函数f()获取数据并添加缓存。存在则直接返回,不会触发f()回调函数
var f cache.CallBack = cache.CallBackFunc(func(key string, params map[string]interface{}) ([]byte, error) {
return json.Marshal("cache write data")
})
// 回调函数的参数对应Cache函数的key,map[string]interface{}{}
cache.Instance.CallBackFunc(f).Cache("cache_key", map[string]interface{}{}, 600)
3个示例仅 rpcPort, httpPort := "8811", ":8810"
端口不同
保证 AllHosts 列表一致且包含所有的缓存节点信息
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型