Redis 模块 (redis)
redis 模块提供了一个高性能、内存安全且易于使用的 Redis 客户端,集成了分布式 ID 生成和发布订阅功能。
设计特性
- 消除摩擦: 自动处理连接池、重试、以及复杂类型的 JSON 序列化。
- 内存安全: 对 Redis 密码进行内存保护,防止内存 Dump 泄露敏感信息。
- 泛型支持: 结果集支持泛型绑定
To[T]。 - 分布式 ID: 内置基于 Redis 的高性能分布式 ID 生成器。
API 指南
基础连接
GetRedis(name string, logger *log.Logger) *Redis: 获取或创建一个 Redis 实例(支持 DSN 或配置文件名)。NewRedis(conf *Config, logger *log.Logger) *Redis: 使用指定配置创建 Redis 实例。
核心操作
Do(cmd string, values ...any) *Result: 执行原生 Redis 命令。- 支持大部分标准命令:
GET,SET,HGET,HSET,LPUSH,LPOP,SADD,ZRANGE,PUBLISH等。
结果处理 (Result)
Int(),String(),Bool(),Float(): 基础类型转换。To(target any): 将结果反序列化到结构体或 Map。To[T](rs *Result) T: 泛型版本,直接返回目标类型对象。Ints(),Strings(),Results(): 处理数组结果。ResultMap(): 处理 Hash 或键值对结果。
发布订阅
Start(): 开启订阅监听协程。Subscribe(channel string, reset func(), received func([]byte)): 订阅频道。Unsubscribe(channel string): 取消订阅。Stop(): 停止所有订阅。
分布式 ID (IDMaker)
NewIDMaker(rd *Redis) *IDMaker: 创建分布式 ID 生成器。Get(size int): 获取指定长度的唯一 ID。GetForMysql(size int): 获取针对 MySQL 优化的唯一 ID。
示例
import "apigo.cc/go/redis"
// 获取实例 (自动从 redis.json 加载)
rd := redis.GetRedis("test", nil)
// 设置结构体 (自动 JSON 序列化)
rd.SET("user:1", User{Name: "Sam", Age: 18})
// 获取并自动绑定 (泛型)
user := redis.To[User](rd.GET("user:1"))
// 分布式 ID
maker := redis.NewIDMaker(rd)
id := maker.Get(10)
Description
Languages
Go
100%