Updated on 2024-11-26 GMT+08:00

Command Restrictions

Some Redis commands are supported by Redis Cluster DCS instances for multi-key operations in the same slot. For details, see Table 1.

Some commands support multiple keys but do not support cross-slot access. For details, see Table 2.

Table 3 lists commands restricted for Proxy Cluster DCS Redis 4.0 instances.

Table 1 Redis commands restricted in Redis Cluster DCS instances

Category

Description

Set

SINTER

Returns the members of the set resulting from the intersection of all the given sets.

SINTERSTORE

Equal to SINTER, but instead of returning the result set, it is stored in destination.

SUNION

Returns the members of the set resulting from the union of all the given sets.

SUNIONSTORE

Equal to SUNION, but instead of returning the result set, it is stored in destination.

SDIFF

Returns the members of the set resulting from the difference between the first set and all the successive sets.

SDIFFSTORE

Equal to SDIFF, but instead of returning the result set, it is stored in destination.

SMOVE

Moves member from the set at source to the set at destination.

Sorted Set

ZUNIONSTORE

Computes the union of numkeys sorted sets given by the specified keys.

ZINTERSTORE

Computes the intersection of numkeys sorted sets given by the specified keys.

HyperLogLog

PFCOUNT

Returns the approximated cardinality computed by the HyperLogLog data structure stored at the specified variable.

PFMERGE

Merges multiple HyperLogLog values into a unique value.

Keys

RENAME

Renames key to newkey.

RENAMENX

Renames key to newkey if newkey does not yet exist.

BITOP

Performs a bitwise operation between multiple keys (containing string values) and stores the result in the destination key.

RPOPLPUSH

Returns and removes the last element (tail) of the list stored at source, and pushes the element at the first element (head) of the list stored at destination.

String

MSETNX

Merges multiple HyperLogLog values into a unique value.

While running commands that take a long time to run, such as FLUSHALL, DCS instances may not respond to other commands and may change to the faulty state. After the command finishes executing, the instance will return to normal.

Table 2 Multi-key commands of Proxy Cluster instances

Category

Command

Multi-key commands that support cross-slot access

DEL, MGET, MSET, EXISTS, SUNION, SINTER, SDIFF, SUNIONSTORE, SINTERSTORE, SDIFFSTORE, ZUNIONSTORE, ZINTERSTORE

Multi-key commands that do not support cross-slot access

SMOVE, SORT, BITOP, MSETNX, RENAME, RENAMENX, BLPOP, BRPOP, RPOPLPUSH, BRPOPLPUSH, PFMERGE, PFCOUNT, BLMOVE, COPY, GEOSEARCHSTORE, LMOVE, ZRANGESTORE

Table 3 Redis commands restricted for Proxy Cluster DCS Redis instances

Category

Command

Restriction

Set

SMOVE

For a Proxy Cluster instance, the source and destination keys must be in the same slot.

Sorted sets

BZPOPMAX

For a Proxy Cluster instance, all keys transferred must be in the same slot.

BZPOPMIN

Geo

GEORADIUS

  • For a Proxy Cluster instance, all keys transferred must be in the same slot.
  • For a Proxy Cluster instance with multiple databases, the STORE option is not supported.

GEORADIUSBYMEMBER

GEOSEARCHSTORE

Connection

CLIENT KILL

  • Only the following two formats are supported:
    • CLIENT KILL ip:port
    • CLIENT KILL ADDR ip:port
  • The id field has a random value, and it does not meet the idc1<idc2→Tc1<Tc2 requirement.

CLIENT LIST

  • Only the following two formats are supported:
    • CLIENT LIST
    • CLIENT LIST [TYPE normal|master|replica|pubsub]
  • The id field has a random value, and it does not meet the idc1<idc2→Tc1<Tc2 requirement.

SELECT index

Multi-DB of Proxy Cluster instances can be implemented by changing the keys. This solution is not recommended.

Constraints on supporting multi-DB for a Proxy Cluster instance:

  1. The backend storage rewrites keys based on certain rules. Keys in the exported RDB file are not the original keys but can still be accessed through the Redis protocol.
  2. The FLUSHDB command deletes keys one by one, which takes a long time.
  3. SWAPDB is not supported.
  4. The INFO KEYSPACE command does not return data of multi-DB.
  5. The DBSIZE command is time-consuming. Do not use it in the code.
  6. If multi-DB is used, the performance of the KEYS and SCAN commands deteriorates by up to 50%.
  7. LUA scripts do not support multi-DB.
  8. The RANDOMKEY command does not support multi-DB.
  9. By default, multi-DB is disabled. Before enabling or disabling this option for an instance, clear the instance data.

HyperLogLog

PFCOUNT

For a Proxy Cluster instance, all keys transferred must be in the same slot.

PFMERGE

Keys

RENAME

For a Proxy Cluster instance, all keys transferred must be in the same slot.

RENAMENX

SCAN

Proxy Cluster instances do not support the SCAN command in pipelines.

Lists

BLPOP

For a Proxy Cluster instance, all keys transferred must be in the same slot.

BRPOP

BRPOPLPUSH

Pub/Sub

PSUBSCRIBE

Proxy Cluster instances do not support keyspace event subscription, so there would be no keyspace event subscription failure.

Scripting

EVAL

  • For a Proxy Cluster instance, all keys transferred must be in the same slot.
  • When the multi-DB function is enabled for a Proxy Cluster instance, the KEYS parameter is modified. Pay attention to the KEYS parameter used in the Lua script.

EVALSHA

Server

MEMORY DOCTOR

For a Proxy Cluster instance, add the ip:port of the node at the end of the command.

Do as follows to obtain the IP address and port number of a node (MEMORY USAGE is used as an example):

  1. Run the cluster keyslot key command to query the slot number of a key.
  2. Run the icluster nodes command to query the IP address and port number corresponding to the slot where the key is.

    If the required information is not returned after you run the icluster nodes command, your Proxy Cluster instance may be of an earlier version. In this case, run the cluster nodes command.

  3. Run the MEMORY USAGE key ip:port command.

    If multi-DB is enabled for the Proxy Cluster instance, run the MEMORY USAGE xxx:As {key} ip:port command, where xxx indicates the DB where the key value is. For example, DB0, DB1, and DB255 correspond to 000, 001, and 255, respectively.

    The following is an example for a single-DB Proxy Cluster instance:
    set key1 value1
    OK
    get key1
    value1
    cluster keyslot key1
    9189
    icluster nodes
    xxx 192.168.00.00:1111@xxx xxx connected 10923-16383 
    xxx 192.168.00.01:2222@xxx xxx connected 0-5460 
    xxx 192.168.00.02:3333@xxx xxx connected 5461-10922
    MEMORY USAGE key1 192.168.00.02:3333
    54

MEMORY HELP

MEMORY MALLOC-STATS

MEMORY PURGE

MEMORY STATS

MEMORY USAGE

MONITOR

Strings

BITOP

For a Proxy Cluster instance, all keys transferred must be in the same slot.

MSETNX

Transactions

WATCH

For a Proxy Cluster instance, all keys transferred must be in the same slot.

MULTI

The order of cross-slot commands in a transaction is not guaranteed.

The following commands cannot be used in transactions: WATCH, MONITOR, RANDOMKEY, KEYS, SCAN, SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, SCRIPT, EVAL, EVALSHA, DBSIZE, AUTH, FLUSHDB, FLUSHALL, CLIENT, MEMORY

EXEC

Streams

XACK

Currently, Proxy Cluster instances do not support Streams.

XADD

XCLAIM

XDEL

XGROUP

XINFO

XLEN

XPENDING

XRANGE

XTRIM

XREVRANGE

XREAD

XREADGROUP GROUP

XAUTOCLAIM