4.6 缓存、Redis 与 ID 发号器

缓存与 ID 生成器

dwz-server 的缓存层和 ID 生成器都采用可插拔驱动模式,通过 CACHE_DRIVERID_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(必须)