4.6 缓存、Redis 与 ID 发号器
缓存与 ID 生成器
dwz-server 的缓存层和 ID 生成器都采用可插拔驱动模式,通过 CACHE_DRIVER 与 ID_GENERATOR_DRIVER 切换。
缓存驱动
local(内存缓存)
cache:
driver: local- 基于
github.com/patrickmn/go-cache - 零依赖,进程内生效
- 限制:多实例部署时各节点缓存独立,不共享,也无法在节点间失效通知
- 适合:单实例部署、独立模式
redis
cache:
driver: redis
redis:
host: localhost
port: 6379
password: ""
db: 0
pool_size: 10
min_idle_conns: 5- 基于
github.com/redis/go-redis/v9 - 支持多实例共享、实时失效
- 适合:生产环境、集群部署
ID 生成器
短链接的内部自增 ID 通过 ID 生成器产生,最终通过 Base62 位数保持的混淆算法转换为用户可见的短码(详情见「附录 → 工作日志」中的算法分析)。
local
id_generator:
driver: local- 本地原子计数器,仅适用于单实例
- 多实例并发会产生 ID 冲突
redis
id_generator:
driver: redis- 基于 Redis
INCR的分布式计数 - 多实例共享同一 ID 序列,无冲突
- 生产必备
驱动组合建议
| 场景 | CACHE_DRIVER | ID_GENERATOR_DRIVER |
|---|---|---|
| 个人 / 单机 | local |
local |
| 生产单实例 | redis |
redis |
| 生产多实例 | redis |
redis(必须) |