鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

Redis配置调优

通过调整Redis的参数配置,可以提升Redis的性能。

每个Redis实例的参数都可以通过修改默认配置路径“/etc/redis.conf”下的文件来调整。

在实际应用中,用户需根据表1以及实际应用场景选择最合适的同步策略。

表1 Redis实例参数说明

参数名称

默认值

推荐值

含义

appendfsync

everysec

everysec

该参数指定了Redis在将数据写入磁盘时的同步策略,具体含义如下:

  • no:Redis不进行磁盘同步,仅将数据写入内存缓存中,操作系统在需要时将数据同步到磁盘。这种方式最快,但是数据会在Redis重启或者崩溃时数据会丢失。
  • always:每次Redis执行写操作时都会将数据同步到磁盘,确保数据的持久化。这种方式最安全,但会降低Redis的性能。
  • everysec:Redis每秒将数据同步到磁盘一次,确保数据的持久化。这种方式是默认的同步策略,可以在一定程度上保证数据的安全性和Redis的性能。

appendonly

no

no

该参数用于指定是否启用Redis的持久化功能。

  • no:不启用Redis的持久化功能。
  • yes:启用Redis的持久化功能,Redis运行时将使用“append-only文件”记录所有写入操作。

save

save 900 1

save 300 10

save 60 10000

save ""

该参数用于保存数据到磁盘上。

  • 默认情况下,Redis会根据配置的时间间隔和修改次数自动保存数据,如save 900 1表示900秒内至少有1次修改则保存数据。
  • 建议使用空配置(save ""),即不依赖Redis的自动保存功能,而是根据实际需求通过其他方式(如手动触发或外部备份工具)进行数据备份。

cluster-require-full-coverage

yes

yes

该参数用于指定集群中是否需要所有槽位都被分配到节点上,即是否需要完全覆盖。

  • yes:集群中所有槽位必须被分配,否则Redis集群将停止接受查询请求。在这种情况下,如果集群部分实例故障(例如一部分槽位没有被覆盖),那整个集群也将不可用。一旦所有槽位被分配,集群会自动变为可用。
  • no:允许部分槽位未被分配,提高集群的可用性。

maxmemory

1024

1024

该参数用于限制Redis占用的最大内存大小,单位为MB。

maxmemory-policy

noeviction

noeviction

该参数用于指定在达到最大内存限制时执行数据清除策略。可在以下8个行为中选择:

  • volatile-lru:在过期键中使用LRU算法选择要清除的键。
  • allkeys-lru:在所有键中使用LRU算法选择要清除的键。
  • volatile-random:在过期键中随机选择要清除的键。
  • allkeys-random:在所有键中随机选择要清除的键。
  • volatile-ttl:清除最快过期的键。
  • allkeys-smart:使用冷却算法在所有的键中选择一个进行清除。
  • volatile-smart:使用冷却算法在设置了过期时间的键中选择一个进行清除。
  • noeviction:不会清除任何键,执行写操作时返回错误。

rdbchecksum

yes

yes

该参数用于设置是否启用RDB校验。

  • yes:启用
  • no:禁用

rdbcompression

yes

yes

该参数用于控制Redis在执行RDB持久化时是否对数据进行压缩。

  • yes:启用
  • no:禁用

stop-writes-on-bgsave-error

yes

yes

该参数用于控制当Redis在执行后台持久化操作(bgsave)时出现错误时的行为。

  • yes:表示当Redis在执行持久化操作(即bgsave)过程中出现错误时,Redis将停止接受写操作,直到管理员手动处理并解决bgsave错误。
  • no:表示在Redis执行后台持久化操作(即bgsave)过程中出现错误时,Redis不会停止接受写操作。这意味着即使bgsave失败,Redis仍然会继续处理客户端的写请求,而不会将这些请求阻塞或拒绝。

activerehashing

no

no

该参数用于控制是否重置hash表。

  • 设置成yes后,redis将每100毫秒使用1毫秒CPU时间来对Redis的hash表重新hash,可降低内存的使用。
  • 当使用场景有较为严格的实时性需求时,把这项配置为no;如果没有严格的实时性要求,可以设置为yes,以便能尽可能快地释放内存。

activedefrag

no

no

该参数用于控制是否启用碎片整理功能。

  • yes:Redis会在内存使用率超过指定阈值时,自动进行碎片整理,以减少内存碎片和提高内存使用效率。
  • no:表示Redis不会启用自动内存碎片整理功能。