Supported Redis configurations

This page describes maxmemory policies and other Redis configurations available for Memorystore for Redis. You do not need to restart your Redis instance if you adjust a configuration.

For instructions on how to modify the configurations listed below, see Configuring Redis Instances.

Maxmemory policies

When your Redis instance memory is full, and a new write comes in, Redis evicts keys to make room for the write based on your instance's maxmemory policy. The default maxmemory policy for Memorystore for Redis is volatile-lru. You can also use one of the following maxmemory policies:

  • noeviction: Returns an error when the Redis instance reaches maxmemory. Does not overwrite or evict any data.
  • allkeys-lfu: Available in Redis version 4.0, or later. Evicts the least frequently used (LFU) keys from the entire keyset.
  • allkeys-lru: Evicts the least recently used (LRU) keys from the entire keyset.
  • volatile-lfu: Available in Redis version 4.0, or later. Evicts the least-frequently-used keys that are set with TTL (time to live) expirations.
  • volatile-lru: Evicts the least recently used (LRU) keys that are set with TTL expirations.
  • allkeys-random: Evicts random keys from the entire keyspace.
  • volatile-random: Evicts random keys from among those set with TTL expirations.
  • volatile-ttl: Evicts the keys with the shortest TTL from among those set with TTL expirations.

Modifiable configuration parameters

You can modify the following parameters when creating or updating a Memorystore for Redis instance.


Parameter Description Acceptable values
activedefrag Redis version 4.0, or later. Works to free up instance memory tied up by standard OSS Redis memory fragmentation behavior. no (default)
yes
databases Redis version 3.2, or later. Specifies the number of databases on the Redis server. 1-100
Default is 16
lazyfree-lazy-eviction Redis version 7.0, or later. Enables/disables lazy free for eviction. no disables this configuration. For more information, see REDIS.CONF no (default)
yes
lazyfree-lazy-expire Redis version 7.0, or later. Enables/disables lazy free for expire. no disables this configuration. For more information, see REDIS.CONF no (default)
yes
lazyfree-lazy-user-del Redis version 7.0, or later. Enables/disables lazy free for user DEL. no disables this configuration. For more information, see REDIS.CONF no (default)
yes
lazyfree-lazy-user-flush Redis version 7.0, or later. Enables/disables the lazy free for user flush. no disables this configuration. For more information, see REDIS.CONF no (default)
yes
lfu-decay-time Redis version 4.0, or later. The time, in minutes, before the LFU frequency counter for a given key will be divided by two (or, if the counter is < 10, decremented by 1). See the REDIS.CONF file for additional information. Positive integers of the 'long' data type
(default=1)
lfu-log-factor Redis version 4.0, or later. Determines how the frequency counter represents key hits. Before you modify the default configuration, read about how the lfu-log-factor configuration works in the REDIS.CONF file. Positive integers of the 'long' data type
(default=10)
maxmemory-clients Redis 7.0, or later. This configuration allows users to control maximum memory usage of clients.

Total memory usage of normal/pubsub clients. If the limit is hit, the client with most memory usage will be evicted
Default is 0% (no limit). Acceptable values are integer percent values between 0% and 100%. Represents the percentage of instance maxmemory to which client storage is limited.
maxmemory-gb Designates an adjustable limit at which your eviction policy takes effect. For example, if you have a 10 GB instance and you set maxmemory-gb to 8, your eviction policy takes effect when your data occupies 8 GB of your instance memory. This leaves you 2 GB of memory as overhead. By default maxmemory-gb is set to your instance capacity. For details on how to best use the maxmemory-gb configuration, see the Memorystore memory management best practices.

This configuration is displayed as maxmemory-percent in the Google Cloud console. When using the console, you set maxmemory-percent as percentage of your instance capacity instead of a specific number of GBs.
Number of GB expressed as a whole number or decimal.
Examples:
10 designates a maxmemory-gb of 10 GB.
1.5 designates a maxmemory-gb of 1.5 GB.
maxmemory-gb can be reduced to a minimum of 20% of your instance capacity.
maxmemory-policy Specifies the behavior Redis follows when the instance data reaches the maxmemory-gb limit. Refer to Maxmemory policies for a description of the behavior of each policy.

For additional information about the open source Redis maxmemory policies, see the open source Redis LRU cache page
noeviction
allkeys-lru
volatile-lru (default)
allkeys-random
volatile-random
volatile-ttl
volatile-lfu (Redis version 4.0 and higher)
allkeys-lfu (Redis version 4.0 and higher)
notify-keyspace-events Allows clients to subscribe to notifications on certain keyspace events. See the Redis Keyspace Notifications page on the Redis site for more information. "" (default)
K
Keyspace events, published with __keyspace@__ prefix.
E
Keyevent events, published with __keyevent@__ prefix.
g
Generic commands (non-type specific) like DEL, EXPIRE, or 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
Alias for g$lshzxe, so that the "AKE" string means all the events.
stream-node-max-bytes Redis version 5.0, or later. The Redis stream data structure uses a radix tree to store items. The stream-node-max-bytes parameter designates the maximum number of bytes available to store items in a single tree node. Once this limit is reached new items are stored in a new tree node. Integers 0 and higher.
(default=4096)
0 designates a tree node of unlimited size.
stream-node-max-entries Redis version 5.0, or later. The Redis stream data structure uses a radix tree to store items. The stream-node-max-entries parameter designates the number of items that can be stored in a single node. When this limit is reached, new items are stored in a new tree node. Integers 0 and higher.
(default=100)
0 designates a tree node with an unlimited number of items.
timeout The number of seconds before idle client connections are terminated. However, if timeout is set to 0 idle clients do not timeout and remain connected until the client issues the termination. 0 (default)
Integers >= 120
Unit = seconds

Unmodifiable configuration parameters

The following table lists the Redis configuration parameters that you cannot modify in Memorystore for Redis and their default values. See the Redis configuration documentation for detailed information about these configuration parameters.

Parameter Default Value
lua-time-limit 5000
hash-max-ziplist-entries 2048
hash-max-ziplist-value 1024
list-max-ziplist-size -2
list-compress-depth . 0
set-max-intset-entries 512
zset-max-ziplist-entries 1024
zset-max-ziplist-value 1024
hll-sparse-max-byte 3000
activerehashing yes
hz 10
databases 16
maxclients 65000
slowlog-log-slower-than 10000
slowlog-max-len 128
repl-diskless-load swapdb
io-threads-do-reads yes

What's next