16、tracking-table-max-keys
我在 Redis 6.0 版本,实现了服务端辅助实现客户端缓存的特性,需要追踪客户端有哪些 key 。当某个 key 被修改,我需要把这个失效信息发送到对应的客户端将本地缓存失效,这个配置就是用于指定追踪表保存的最大 key 数量,一旦超过这个数量,即使这个 key 没有被修改,为了回收内存我也会强制这个 key 所在的客户端缓存值失效 。
设置 0 表示不限制,需要注意的是,如果使用广播模式实现键追踪,则不需要额外内存,忽略这个配置 。
使用广播模式的不足就是与这个 key 无关的客户端也会收到失效消息 。
四、安全正是由于我快的一塌糊涂,攻击者一秒钟可以尝试 100 万个密码,所以你应该使用非常健壮的密码 。
1、ACL
ACL 日志的最大长度,默认配置 acllog-max-len 128 表示最大 128 mb 。
另外,使用 aclfile /etc/redis/users.acl 配置 ACL 文件所在位置 。
2、requirepass
当前 Redis 服务器的访问密码,默认是不需要密码访问,网络危险,必须设置,如 requirepass magebyte660设置密码为 “magebyte666” 。
3、maxclients
设置客户端同时连接的最大数量,默认设置是 maxclients 10000 。达到最大值,我将关闭客户端新的连接,并发送一个 max number of clients reached 错误给客户端 。
五、内存管理作为用内存保存数据的我,这部分的配置也相当重要 。
1、maxmemory
设置使用内存最大字节,当内存达到限制,我将尝试根据配置的内存淘汰策略(参见 maxmemory-policy)删除一些 key 。建议你不要设置太大的内存,防止执行 RDB 内存快照文件或者 AOF 重写的时候因数据太大而阻塞过长时间 。
推荐最大设置为 maxmemory 6GB 。
如果淘汰策略是 noeviction,当收到写请求,我将回复错误给客户端,读请求依然可以执行 。
如果你把我当做一个 LRU 或 LFU 缓存系统的时候,那请用心关注以下配置 。
2、maxmemory-policy
设置内存淘汰策略,定义当内存满时如何淘汰 key,默认配置是 noeviction 。
- volatile-lru -> 在设置过期时间的 key 中使用近似 LRU 驱逐 。
- allkeys-lru -> 在所有 key 中使用近似 LRU 驱逐 。
- volatile-lfu -> 在过期 key 中使用近似 LFU 驱逐 。
- allkeys-lfu -> 在所有 key 中使用近似 LFU 。
- volatile-random -> 在设置了过期时间的 key 中随机删除一个 。
- allkeys-random -> 在所有的 key 中随机删除一个 。
- volatile-ttl -> 谁快过期就删谁 。
- noeviction -> 不删除任何 key,内存满了直接返回报错 。
LRU, LFU and minimal TTL algorithms 不是精确的算法,是一个近似的算法(主要为了节省内存) 。
所以需要你自己权衡速度和精确度 。默认会抽取 5 个 key,选择一个最近最少使用的 key 淘汰,你可以改变这个数量 。
默认的 5 可以提供不错的结果 。配置 10 会非常接近真实的 LRU 但是会耗费更多的 CPU,配置 3 会更快,但是就不那么精确了 。
4、replica-ignore-maxmemory
从 Redis 5.0 开始,默认情况下 slave 节点会忽略 maxmemory 配置,除非在故障转移后或手动将其提升为 master 。这意味着只有 master 才会执行内存淘汰策略,当 master 删除 key 后会发送 DEL指令给 slave 。
默认配置replica-ignore-maxmemory yes 。
5、active-expire-effort
我有两种方式删除过期数据 。
- 后台周期性选取部分数据删除 。
- 惰性删除,当访问请求到某个 key 的时候,发现该 key 已经过期则删除 。
六、惰性释放
MySQL:“ 可以使用非阻塞的方式删除 bigkey 么?”我提供了两种删除 key 的基本命令用于删除数据 。
- DEL 指令:这是一个阻塞的删除,执行该指令会停止处理写请求,使用同步的方式去回收 DEL 删除的对象的内存 。如果这个 key 对应的 value 是一个非常小的对象, DEL 执行的时间非常短,时间复杂度为 O(1) 或者 O(log n) 。如果 key 对应的 value 非常大,比如集合对象的数据包含百万个元素,服务器将阻塞很长时间(几秒钟)才能完成操作 。
推荐阅读
- 职业教育|热血江湖手游:经典五大职业设定,公测火爆开启,两大门派争霸,谁能成为江湖第一?
- “魔兽”退场 两代玩家告别青春
- 华晨宇|有一种“差距”叫邓紫棋和华晨宇,分手5年后,两人现状天差地别
- 王思聪|王思聪与网红喝下午茶,女方被扒已婚有娃,两人关系引发猜测
- 华晨宇|华晨宇王悦伊高调秀恩爱,两人穿情侣装、戴情侣口罩,细节好浪漫
- 陈乔恩|陈乔恩和Alan晒照秀幸福,甜喊老公老婆示爱,两人越来越有夫妻相
- 林青霞|林青霞邀请作家莫言家中做客,吃水饺喝茅台,两人同龄像隔代人!
- 梦中的那片海|68岁林青霞看京剧,和大师交头接耳显亲密,两位友人都戴千万翡翠
- 王思聪|王思聪带俩美女玩剧本杀,大热天套两件T恤,同回酒店当护花使者
- 李明|女同事请吃饭,喊两位闺蜜一起,吃完准备离开就被服务员拦了下来!