Modifying Configuration Parameters¶
You can modify the configuration parameters of your DCS instance to optimize DCS performance based on your requirements.
For example, if you do not need data persistence, set appendonly to no.
Note
After the instance configuration parameters are modified, the modification takes effect immediately without the need to manually restart the instance. For a cluster instance, the modification takes effect on all shards.
Procedure¶
Log in to the DCS console.
Click in the upper left corner and select a region and a project.
In the navigation pane, choose Cache Manager.
On the Cache Manager page, click the name of the DCS instance you want to configure.
Choose Instance Configuration > Parameters.
On the Parameters page, click Modify.
Modify parameters based on your requirements.
Table 1 describes the parameters. In most cases, retain the default values.
¶ Parameter
Description
Value Range
Default Value
active-expire-num
Number of expired keys that can be deleted in regular scans.
Redis 3.0 instances do not have this parameter.
1-1000
20
timeout
The maximum amount of time (in seconds) a connection between a client and the DCS instance can be allowed to remain idle before the connection is terminated. A setting of 0 means that this function is disabled.
Proxy Cluster instances do not have this parameter.
0-7200 seconds
0
appendfsync
Controls how often fsync() transfers cached data to the disk. Note that some OSs will perform a complete data transfer but some others only make a "best-effort" attempt.
There are three settings:
no: fsync() is never called. The OS will flush data when it is ready. This mode offers the highest performance.
always: fsync() is called after every write to the AOF. This mode is very slow, but also very safe.
everysec: fsync() is called once per second. This mode provides a compromise between safety and performance.
Single-node instances do not have this parameter.
no
always
everysec
no
appendonly
Indicates whether to log each modification of the instance. By default, data is written to disks asynchronously in Redis. If this function is disabled, recently-generated data might be lost in the event of a power failure. Options:
yes: enabled
no: disabled
Single-node instances do not have this parameter.
yes
no
yes
client-output-buffer-limit-slave-soft-seconds
Number of seconds that the output buffer remains above client-output-buffer-slave-soft-limit before the client is disconnected.
Single-node instances do not have this parameter.
0-60
60
client-output-buffer-slave-hard-limit
Hard limit (in bytes) on the output buffer of replica clients. Once the output buffer exceeds the hard limit, the client is immediately disconnected.
Single-node instances do not have this parameter.
Depends on the instance type and specifications.
Depends on the instance type and specifications.
client-output-buffer-slave-soft-limit
Soft limit (in bytes) on the output buffer of replica clients. Once the output buffer exceeds the soft limit and continuously remains above the limit for the time specified by the client-output-buffer-limit-slave-soft-seconds parameter, the client is disconnected.
Single-node instances do not have this parameter.
Depends on the instance type and specifications.
Depends on the instance type and specifications.
maxmemory-policy
The deletion policy to apply when the maxmemory limit is reached. Options:
volatile-lru: Evict keys by trying to remove the less recently used (LRU) keys first, but only among keys that have an expire set. (Recommended)
allkeys-lru: Evict keys by trying to remove the LRU keys first.
volatile-random: evict keys randomly, but only evict keys with an expire set.
allkeys-random: Evict keys randomly.
volatile-ttl: Evict keys with an expire set, and try to evict keys with a shorter time to live (TTL) first.
noeviction: Do not delete any keys and only return errors when the memory limit was reached.
volatile-lfu: Evict keys by trying to remove the less frequently used (LFU) keys first, but only among keys that have an expire set.
allkeys-lfu: Evict keys by trying to remove the LFU keys first.
Depends on the instance version.
Depends on the instance version and type.
lua-time-limit
Maximum time allowed for executing a Lua script (in milliseconds).
100-5000
5,000
master-read-only
Sets the instance to be read-only. All write operations will fail.
Proxy Cluster instances do not have this parameter.
yes
no
no
maxclients
The maximum number of clients allowed to be concurrently connected to a DCS instance.
Proxy Cluster instances do not have this parameter.
Depends on the instance type and specifications.
Depends on the instance type and specifications.
proto-max-bulk-len
Maximum size of a single element request (in bytes).
1,048,576-536,870,912
536,870,912
repl-backlog-size
The replication backlog size (bytes). The backlog is a buffer that accumulates replica data when replicas are disconnected from the master. When a replica reconnects, a partial synchronization is performed to synchronize the data that was missed while replicas were disconnected.
Single-node instances do not have this parameter.
16,384-1,073,741,824
1,048,576
repl-backlog-ttl
The amount of time, in seconds, before the backlog buffer is released, starting from the last a replica was disconnected. The value 0 indicates that the backlog is never released.
Single-node instances do not have this parameter.
0-604,800
3,600
repl-timeout
Replication timeout (in seconds).
Single-node instances do not have this parameter.
30-3,600
60
hash-max-ziplist-entries
Hashes are encoded using a memory efficient data structure when the number of entries in hashes is less than the value of this parameter.
1-10,000
512
hash-max-ziplist-value
Hashes are encoded using a memory efficient data structure when the biggest entry in hashes does not exceed the length threshold indicated by this parameter.
1-10,000
64
set-max-intset-entries
When a set is composed of just strings that happen to be integers in radix 10 in the range of 64 bit signed integers, sets are encoded using a memory efficient data structure.
1-10,000
512
zset-max-ziplist-entries
Sorted sets are encoded using a memory efficient data structure when the number of entries in sorted sets is less than the value of this parameter.
1-10,000
128
zset-max-ziplist-value
Sorted sets are encoded using a memory efficient data structure when the biggest entry in sorted sets does not exceed the length threshold indicated by this parameter.
1-10,000
64
latency-monitor-threshold
Threshold time in latency monitoring. Unit: millisecond.
Set to 0: Latency monitoring is disabled.
Set to more than 0: All with at least this many milliseconds of latency will be logged.
By running the LATENCY command, you can perform operations related to latency monitoring, such as obtaining statistical data, and configuring and enabling latency monitoring.
Proxy Cluster instances do not have this parameter.
0-86,400,000 ms
0
notify-keyspace-events
Controls which keyspace events notifications are enabled for. If the value is an empty string, this function is disabled. A combination of different values can be used to enable notifications for multiple event types. Possible values:
K: Keyspace events, published with the __keyspace@__ prefix.
E: Keyevent events, published with __keyevent@__ prefix
g: Generic commands (non-type specific) such as DEL, EXPIRE, and RENAME
$: String commands
l: List commands
s: Set commands
h: Hash commands
z: Sorted set commands
x: Expired events (events generated every time a key expires)
e: Evicted events (events generated when a key is evicted for maxmemory)
A: an alias for "g$lshzxe"
The parameter value must contain either K or E. A cannot be used together with any of the characters in "g$lshzxe". For example, the value Kl means that Redis will notify Pub/Sub clients about keyspace events and list commands. The value AKE means Redis will notify Pub/Sub clients about all events.
Proxy Cluster instances do not have this parameter.
See the parameter description.
Ex
slowlog-log-slower-than
Redis records queries that exceed a specified execution time.
slowlog-log-slower-than is the maximum time allowed, in microseconds, for command execution. If this threshold is exceeded, Redis will record the query.
0-1,000,000
10,000
slowlog-max-len
The maximum allowed number of slow queries that can be logged. Slow query log consumes memory, but you can reclaim this memory by running the SLOWLOG RESET command.
0-1000
128
Note
For more information about the parameters described in Table 1, visit https://redis.io/topics/memory-optimization.
The latency-monitor-threshold parameter is usually used for fault location. After locating faults based on the latency information collected, change the value of latency-monitor-threshold to 0 to avoid unnecessary latency.
More about the notify-keyspace-events parameter:
The parameter setting must contain at least a K or E.
A is an alias for "g$lshzxe" and cannot be used together with any of the characters in "g$lshzxe".
For example, the value Kl means that Redis will notify Pub/Sub clients about keyspace events and list commands. The value AKE means Redis will notify Pub/Sub clients about all events.
Configurable parameters and their values vary depending on the instance type.
After you have finished setting the parameters, click Save.
Click Yes to confirm the modification.
Typical Scenarios of Configuring Parameters¶
The following describes how to change the value of the appendonly parameter:
If Redis is used as the cache and services are insensitive to Redis data losses, disable instance persistence to improve performance. In this case, change the value of appendonly to no. For details, see Procedure.
If Redis is used as the database or services are sensitive to Redis data losses, enable instance persistence. In this case, change the value of appendonly to yes. For details, see Procedure. After instance persistence is enabled, you need to consider the frequency of writing Redis cache data to disks and the impact on the Redis performance. You can use this parameter together with the appendfsync parameter. There are three modes of calling fsync():
no: fsync() is never called. The OS will flush data when it is ready. This mode offers the highest performance.
always: fsync() is called after every write to the AOF. This mode is very slow, but also very safe.
everysec: fsync() is called once per second, ensuring both data security and performance.
Note
Currently, the appendonly and appendfsync parameters can be modified on the console only for master/standby and Redis 4.0 and later Redis Cluster instances.