常用配置说明

https://redis.io/docs/management/config/
https://redis.io/docs/management/config-file/

#bind 0.0.0.0  
port 6379
maxclients 10000
requirepass xxxxxx  #密码

maxmemory 1GB  #内存限制 1GB 1Gb 1gB are all the same.
databases 16   #数据库数量

#appendonly yes #将写操作记录保存到日志中
# Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。 yes表示:存储方式,aof
#cluster-enabled yes  //开启集群模式
#cluster-config-file nodes-7031.conf   //保存节点配置,自动创建,自动更新(建议命名时加上端口号)
#cluster-node-timeout 15000   //集群超时时间,节点超过这个时间没反应就断定是宕机
#masterauth xxxxx            //主服的密码

timeout 60   //连接空置的关闭时间,默认过期时间
tls-session-cache-timeout 60 #更改缓存TLS会话的默认超时。默认超时为300

内存回收

# 以下是到期内存回收策略
maxmemory-policy noeviction
noeviction:不会淘汰任何键,达到内存限制后返回错误
allkeys-random:在所有键中,随机删除键
volatile-random:在设置了过期时间的键中,随机删除键
allkeys-lru:通过LRU算法淘汰最近最少使用的键,保留最近使用的键
volatile-lru:从设置了过期时间的键中,通过LRU算法淘汰最近最少使用的键
allkeys-lfu:从所有键中淘汰使用频率最少的键。从所有键中驱逐使用频率最少的键
volatile-lfu:从设置了过期时间的键中,通过LFU算法淘汰使用频率最少的键
volatile-ttl:从设置了过期时间的键中,淘汰马上就要过期的键


# 内存淘汰策略
maxmemory-policy noeviction
# 抽取数量
maxmemory-samples 5
# 内存淘汰韧性
maxmemory-eviction-tenacity 10
# 后台任务执行间隔
hz 10
# 是否开启动态间隔
dynamic-hz yes

内存淘汰策略

在 redis.conf 或 使用 CONFIG 命令配置 Redis的配置项:

maxmemory 100mb
maxmemory-policy [策略]

淘汰策略:
LRU - 最近很少没碰
对最近很少使用(所有或有过期时间的)的key优先淘汰

allkeys-lru 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。
volatile-lru 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据有空间存放。
LFU - 没碰多少次
对使用频率最少(所有或有过期时间的)的key优先淘汰

allkeys-lfu 尝试回收回收使用频率最少的键(LFU),使得新添加的数据有空间存放。
volatile-lfu 尝试回收使用频率最少的键(LFU),但仅限于在过期集合的键,使得新添加的数据有空间存放。
volatile-ttl 对有过期时间的key中ttl最小的部分优先淘汰
noeviction 返回错误
allkeys-random: 回收随机的键使得新添加的数据有空间存放。
volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。
近似LRU算法
Redis的LRU算法并非完整的实现。这意味着Redis并没办法选择最佳候选来进行回收,也就是最久未被访问的键。

相反它会尝试运行一个近似LRU的算法,通过对少量keys进行取样,然后回收其中一个最好的key(被访问时间较早的)。

Redis LRU有个很重要的点,你通过调整每次回收时检查的采样数量,以实现调整算法的精度。这个参数可以通过以下的配置指令调整:
maxmemory-samples 5