redis.conf

发布于:2024-12-07 ⋅ 阅读:(35) ⋅ 点赞:(0)

tracking-table-max-keys

tracking-table-max-keys 是 Redis 中的一个配置选项,它与 Key Tracking 功能有关。Key Tracking 是 Redis 6.0 引入的一项功能,用于追踪哪些键在被客户端操作时发生了变化。

tracking-table-max-keys 的作用:

该配置项用于限制 Redis 在执行 key tracking 时,最多可以跟踪的键的数量。如果设置的值过小,Redis 会停止跟踪新的键,并丢弃旧的键。相反,如果设置得较大,则可能会占用更多的内存。

详细解释:

  • Key Tracking 是 Redis 中用于监控键变更的一种机制,可以帮助开发者知道哪些键被修改、删除或访问。通常,key tracking 被用于一些应用场景,比如 Redis StreamsRedis Pub/Sub,或者为了对 Redis 数据库进行某种类型的变更追踪。

  • tracking-table-max-keys 控制的是最大可以追踪的键数。Redis 会为每个追踪的键分配内存,如果有太多的键被追踪,它可能会消耗过多的内存,影响性能。因此,Redis 会根据此配置项来限制最多可以追踪的键的数量。

配置项的作用:

  • 如果设置 tracking-table-max-keys 为一个较小的值,Redis 将只会追踪前 N 个键。当新的键被追踪时,Redis 会丢弃旧的键。这个参数对于内存管理非常重要,尤其是当 Redis 中的数据量很大时,设置适当的值可以避免内存过度消耗。

  • 如果设置为 0,表示 不限制追踪的键的数量,这将允许 Redis 追踪无限数量的键。

示例:

假设你在配置文件中设置了:


 

iniCopy Code

tracking-table-max-keys 10000

这表示 Redis 最多只能追踪 10,000 个键。如果有超过 10,000 个键需要被追踪,Redis 会停止追踪新的键,并丢弃最旧的那些键。

默认值:

  • 默认情况下,Redis 将 tracking-table-max-keys 设置为 10000

使用场景:

  • 高流量场景:如果你的 Redis 实例需要处理大量的键,并且启用了 key tracking,那么合理配置 tracking-table-max-keys 可以帮助你更好地管理内存使用。

  • 资源有限的环境:如果你在内存有限的环境中运行 Redis,适当地限制追踪的键数目可以避免 Redis 占用过多内存。

总结:

  • tracking-table-max-keys 用于限制 Redis 可以追踪的最大键数。
  • 通过合理配置该参数,可以在保证功能的同时,避免 Redis 使用过多内存。
  • 适用于需要 key tracking 的场景,特别是在大数据量、高并发的环境中。

redis.conf 配置文件中,Redis 提供了多个配置选项来控制过期策略的行为,特别是在如何处理过期键、如何执行定期删除、如何调整内存管理等方面。下面是与过期策略相关的一些重要配置项:

1. timeout

这个配置项指定了客户端与 Redis 服务器之间的连接超时时间。如果超时,则会关闭连接。虽然它并不直接控制过期键,但它对客户端的连接生命周期有影响。

timeout 0
  • 0:表示不设置超时时间(即无连接超时)。
  • 默认值:0

2. active-expire-effort

此配置项控制 Redis 在定期删除过期键时的“努力程度”,即 Redis 每次扫描的过期键数量。

active-expire-effort 1
  • 默认值1,表示每次扫描 1 个键。
  • 设置较高的值:增加扫描更多的键,Redis 更频繁地进行过期键的清理。
  • 适用场景:如果需要更频繁地清理过期键,可以增加这个值。

3. hz

hz 代表 Redis 事件处理的频率,控制 Redis 在后台执行任务的频率,包括定期删除过期键、清理内存等。更高的 hz 值意味着 Redis 会更频繁地检查和处理过期键。

hz 10
  • 默认值10,表示每秒 10 次事件处理。
  • 增大此值可以使 Redis 更快速地扫描过期键,但会消耗更多的 CPU 资源。

4. maxmemory-policy

此配置项决定了在 Redis 内存达到上限时,Redis 应该如何处理键的删除。虽然它不专门用于过期策略,但当 Redis 达到最大内存限制时,它会根据该策略决定删除哪些键。

maxmemory-policy noeviction
  • noeviction:当内存满时,拒绝写入操作(不删除任何键)。
  • allkeys-lru:在所有键中使用 LRU(最近最少使用)算法删除过期键或未使用的键。
  • volatile-lru:仅对设置了过期时间的键使用 LRU 策略。
  • allkeys-random:随机删除键。
  • volatile-random:随机删除设置了过期时间的键。
  • volatile-ttl:删除最接近过期的键。

5. notify-keyspace-events

此配置项控制键过期事件通知的发布。你可以启用键过期事件的通知机制,当键过期时,Redis 会通过发布/订阅的方式将事件通知给客户端。

notify-keyspace-events Ex
  • E:表示发布事件。
  • x:表示键过期事件。

notify-keyspace-events 配置项允许你订阅键空间事件(如键的过期、删除等),例如,你可以设置 Ex 来监听过期事件。

  • 常用配置
    • K:键空间事件。
    • E:键事件。
    • g:所有过期事件。
    • x:表示过期键事件。

例:notify-keyspace-events "Ex" 会通知所有过期事件。

6. maxmemory

这个配置项决定了 Redis 在内存使用达到最大值时的行为。当 Redis 达到这个内存限制时,它会根据 maxmemory-policy 配置删除一些键。这个选项和过期键的处理无关,但当内存不足时,会影响 Redis 是否会删除过期键或使用其他回收策略。

maxmemory 0
  • 0 表示不设置内存限制。
  • 如果设置了内存限制,Redis 会根据 maxmemory-policy 删除键来释放内存。

7. appendonly 和 appendfsync

这两个配置项控制 Redis 的 AOF(追加文件)持久化方式。虽然它们不直接控制过期键的删除,但它们会影响 Redis 数据的持久化过程,特别是当删除过期键时,它们会影响 AOF 文件的内容。

appendonly yes appendfsync everysec
  • appendonly:启用 AOF 持久化。
  • appendfsync:控制 AOF 文件的同步策略。everysec 表示每秒一次同步。

8. save

这个配置项决定了 Redis 执行 RDB 快照的频率。虽然它不直接与过期策略有关,但在某些情况下,过期键的删除可能会影响 RDB 文件的内容。

save 900 1
  • 表示每 900 秒(15 分钟)如果有 1 个键被修改,则进行一次 RDB 快照。

9. databases

此配置项指定 Redis 支持的数据库数量。虽然它不直接影响过期策略,但它决定了 Redis 中可以存储多少个逻辑数据库。在每个数据库中,Redis 会独立管理其键的过期时间。

databases 16
  • 默认值16

10. lua-time-limit

此配置项设置了 Redis 执行 Lua 脚本时的最大执行时间。虽然与过期策略无关,但如果在 Lua 脚本中处理过期键,这个设置会影响脚本的执行行为。

lua-time-limit 5000
  • 默认值5000 毫秒,即 5 秒。

总结:

Redis 的过期策略通过多个配置选项来控制,主要涉及如何定期删除过期键、控制内存回收策略、以及如何发布过期键事件等。关键配置项如 active-expire-efforthzmaxmemory-policynotify-keyspace-events 等,帮助用户根据应用场景优化 Redis 的内存管理和过期策略。


网站公告

今日签到

点亮在社区的每一天
去签到