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

  1. Log in to the DCS console.

  2. Click image1 in the upper left corner and select a region and a project.

  3. In the navigation pane, choose Cache Manager.

  4. On the Cache Manager page, click the name of the DCS instance you want to configure.

  5. Choose Instance Configuration > Parameters.

  6. On the Parameters page, click Modify.

  7. Modify parameters based on your requirements.

    Table 1 describes the parameters. In most cases, retain the default values.

    Table 1 DCS Redis instance configuration parameters

    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

    1. For more information about the parameters described in Table 1, visit https://redis.io/topics/memory-optimization.

    2. 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.

    3. 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.

    4. Configurable parameters and their values vary depending on the instance type.

  8. After you have finished setting the parameters, click Save.

  9. 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.