2.6 KiB
2.6 KiB
Cache Package
简洁的 Redis 兼容缓存接口,包含最常用的缓存操作。
接口说明
Cache 核心方法
Set/Get/GetBytes/GetScan- 存取值Del- 删除键Exists- 检查键是否存在Expire/TTL- 设置/获取过期时间Inc/IncBy/Dec- 原子递增递减SetNX- 不存在时设置Keys- 模式匹配查找键Close- 关闭连接
Hash 操作方法
HSet/HGet- 设置/获取字段值HGetAll- 获取所有字段值HDel- 删除字段HExists- 检查字段是否存在HKeys- 获取所有字段名HLen- 获取字段数量HIncrBy- 字段值原子递增
配置选项
Driver- 驱动类型 (redis/memory)Addr- 连接地址MasterAddr- 主节点地址ReplicaAddrs- 副本节点地址列表Password- 密码DB- 数据库编号ReadOnly- 只读模式Reconnect- 是否启用自动重连(默认 true)ReconnectInterval- 重连检测间隔(默认 10 秒)- 连接池和超时配置
使用示例
基础 Redis 连接
config := NewConfig("redis", "localhost:6379")
cache, err := Open(config)
if err != nil {
log.Fatal(err)
}
Master-Replica 模式(读写分离)
config := NewConfig("redis", "localhost:6379")
config.MasterAddr = "redis-master:6379"
config.ReplicaAddrs = []string{"redis-replica-1:6379", "redis-replica-2:6379"}
cache, err := Open(config)
// 读操作会自动使用 replica,写操作使用 master
Kubernetes Headless Service 模式
// 自动解析 headless service 并实现读写分离
cache, err := NewRedisFromHeadlessService(
"my-redis-headless.default.svc.cluster.local:6379",
"password",
)
基础操作
// 设置值
err = cache.Set(ctx, "key", "value", time.Hour)
// 获取值
val, err := cache.Get(ctx, "key")
// 原子递增
count, err := cache.IncBy(ctx, "counter", 1)
// Hash 操作
err = cache.HSet(ctx, "user:1", "name", "张三")
name, err := cache.HGet(ctx, "user:1", "name")
all, err := cache.HGetAll(ctx, "user:1")
读写分离说明
- 写操作 (Set, Del, Inc, HSet 等) → Master 节点
- 读操作 (Get, Exists, HGet, Keys 等) → Replica 节点
- Headless Service → 自动解析 Kubernetes Pod 地址
自动重连
- 默认启用:每 10 秒检测一次连接状态
- 断线重连:自动重新初始化连接
- 优雅关闭:Close() 时停止重连检测
// 禁用自动重连
config := NewConfig("redis", "localhost:6379")
config.Reconnect = false
// 自定义重连间隔
config.Reconnect = true
config.ReconnectInterval = 5 * time.Second