# README
单元测试可以使用 https://github.com/alicebob/miniredis, 可以开启一个本地的模拟redis
案例
Redis 优化方向
参数优化
maxIdle设置高点,可以保证突发流量情况下,能够有足够的连接去获取redis,不用在高流量情况下建立连接
go-redis参数优化
min_idle_conn: 30
dial_timeout: "1s"
read_timeout: "500ms"
write_timeout: "500ms"
pool_size: 500
pool_timeout: "60s"
redisgo参数优化
maxIdle = 30
maxActive = 500
dialTimeout = "1s"
readTimeout = "500ms"
writeTimeout = "500ms"
idleTimeout = "60s"
使用优化
- 增加redis从库
- 对批量数据,根据redis从库数量,并发goroutine拉取数据
- 对批量数据大量使用pipeline指令
- 精简key字段
- redis的value存储编解码改为msgpack
Pipeline
# Functions
Init init a default redis instance.
InitTestRedis 实例化一个可以用于单元测试的redis.
LoadConf load redis config.
NewCheckRepeat create a check repeat.
NewIDAlloc create a id alloc instance.
NewRedisManager create a redis manager.
# Constants
DefaultRedisName default redis name.
ErrRedisNotFound not exist in redis.
PrefixCheckRepeat check repeat key.
RepeatDefaultTimeout define default timeout.
# Variables
RedisClient redis 客户端.
# Structs
Config redis config.
IDAlloc id生成器 key 为业务key, 由业务前缀+功能前缀+具体场景id组成 比如生成用户id, 可以传入user_id, 完整示例: gole:idalloc:user_id.
RedisManager define a redis managernolint.
# Interfaces
CheckRepeat define interface.