16boke - 一路博客

redis动态添加内存,动态配置,无需重启

在redis的使用过程中,有时候需要急需修改redis的配置,比如在业务运行的情况下,内存不够怎么办,这时要么赶紧删除无用的内存,要么扩展内存。如果有无用的内容可删除那么所有问题都已经解决。如果内容都是重要的,那只能选择扩展内存。说到扩展内存,redis为我们提供了一个命令。

CONFIG SET

CONFIG SET parameter value

CONFIG SET 命令可以动态地调整 Redis 服务器的配置(configuration)而无须重启。

你可以使用它修改配置参数,或者改变 Redis 的持久化(Persistence)方式。

CONFIG SET 可以修改的配置参数可以使用命令 CONFIG GET * 来列出,所有被 CONFIG SET 修改的配置参数都会立即生效。

关于 CONFIG SET 命令的更多消息,请参见命令 CONFIG GET 的说明。

关于如何使用 CONFIG SET 命令修改 Redis 持久化方式,请参见 Redis Persistence 。

可用版本:

>= 2.0.0

时间复杂度:

不明确

返回值:

当设置成功时返回 OK ,否则返回一个错误。

例如:动态添加内存,原来的内存大小为7g,现在改为9g。其中redis的配置文件中maxmemory的单位是byte

公式如下:

# 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写)
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# 内存配置大小写是一样的.比如 1gb 1Gb 1GB 1gB

所以如果要改为9g,则换算后为:9*1024*1024*1024=9635364864

redis 127.0.0.1:6381> config get maxmemory

1) "maxmemory"

2) "7516192768"

redis 127.0.0.1:6381> config set maxmemory 9635364864

OK

redis 127.0.0.1:6381> config get maxmemory

1) "maxmemory"

2) "9635364864"

我们看看那些参数 redis可以动态设置

127.0.0.1:6381> config get *

  1) "dbfilename"

  2) "dump_6381.rdb"

  3) "requirepass"

  4) ""

  5) "masterauth"

  6) ""

  7) "unixsocket"

  8) ""

  9) "logfile"

 10) "/data/redis/logs/redis_6381.log"

 11) "pidfile"

 12) "/var/run/redis.pid"

 13) "maxmemory"

 14) "9635364864"

 15) "maxmemory-samples"

 16) "3"

 17) "timeout"

 18) "0"

 19) "tcp-keepalive"

 20) "0"

 21) "auto-aof-rewrite-percentage"

 22) "100"

 23) "auto-aof-rewrite-min-size"

 24) "67108864"

 25) "hash-max-ziplist-entries"

 26) "512"

 27) "hash-max-ziplist-value"

 28) "64"

 29) "list-max-ziplist-entries"

 30) "512"

 31) "list-max-ziplist-value"

 32) "64"

 33) "set-max-intset-entries"

 34) "512"

 35) "zset-max-ziplist-entries"

 36) "128"

 37) "zset-max-ziplist-value"

 38) "64"

 39) "hll-sparse-max-bytes"

 40) "3000"

 41) "lua-time-limit"

 42) "5000"

 43) "slowlog-log-slower-than"

 44) "10000"

 45) "slowlog-max-len"

 46) "128"

 47) "port"

 48) "6381"

 49) "tcp-backlog"

 50) "511"

 51) "databases"

 52) "16"

 53) "repl-ping-slave-period"

 54) "10"

 55) "repl-timeout"

 56) "60"

 57) "repl-backlog-size"

 58) "1048576"

 59) "repl-backlog-ttl"

 60) "3600"

 61) "maxclients"

 62) "10000"

 63) "watchdog-period"

 64) "0"

 65) "slave-priority"

 66) "100"

 67) "min-slaves-to-write"

 68) "0"

 69) "min-slaves-max-lag"

 70) "10"

 71) "hz"

 72) "10"

 73) "no-appendfsync-on-rewrite"

 74) "yes"

 75) "slave-serve-stale-data"

 76) "yes"

 77) "slave-read-only"

 78) "yes"

 79) "stop-writes-on-bgsave-error"

 80) "yes"

 81) "daemonize"

 82) "yes"

 83) "rdbcompression"

 84) "yes"

 85) "rdbchecksum"

 86) "yes"

 87) "activerehashing"

 88) "yes"

 89) "repl-disable-tcp-nodelay"

 90) "no"

 91) "aof-rewrite-incremental-fsync"

 92) "yes"

 93) "appendonly"

 94) "yes"

 95) "dir"

 96) "/data/redis/dumps"

 97) "maxmemory-policy"

 98) "volatile-lru"

 99) "appendfsync"

100) "no"

101) "save"

102) ""

103) "loglevel"

104) "notice"

105) "client-output-buffer-limit"

106) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"

107) "unixsocketperm"

108) "0"

109) "slaveof"

110) "192.168.113.113 6381"

111) "notify-keyspace-events"

112) ""

113) "bind"

114) ""

Redis