Skip to main content
Upstash supports Redis client protocol up to version 8.2. We are also gradually adding changes introduced in later versions. Most of the unsupported items are in our roadmap. If you need a feature that we do not support, please drop a note to support@upstash.com. So we can inform you when we are planning to support it.

Supported Commands

BITCOUNT

Count set bits in a string

BITFIELD

Perform arbitrary bitfield operations

BITFIELD_RO

Read-only bitfield operations

BITOP

Perform bitwise operations between strings

BITPOS

Find first bit set or clear in a string

GETBIT

Get the bit value at offset

SETBIT

Set or clear the bit at offset

AUTH

Authenticate to the server

CLIENT GETNAME

Get the current connection name

CLIENT ID

Get the current client ID

CLIENT INFO

Get info about current connection

CLIENT LIST

List all client connections

CLIENT SETINFO

Set client connection attributes

CLIENT SETNAME

Set the connection name

ECHO

Echo the given string

HELLO

Handshake with Redis protocol

PING

Ping the server

QUIT

Close the connection

RESET

Reset the connection

SELECT

Select the database by index

FCALL

Call a function

FCALL_RO

Call a read-only function

FUNCTION DELETE

Delete a library

FUNCTION FLUSH

Delete all libraries

FUNCTION KILL

Kill a running function

FUNCTION LIST

List all libraries

FUNCTION LOAD

Load a library

FUNCTION STATS

Get function execution stats

COPY

Copy a key to another key

DEL

Delete one or more keys

DUMP

Serialize a key’s value

EXISTS

Check if keys exist

EXPIRE

Set a key’s TTL in seconds

EXPIREAT

Set expiry as Unix timestamp

EXPIRETIME

Get expiry as Unix timestamp

KEYS

Find keys matching a pattern

PERSIST

Remove the expiration from a key

PEXPIRE

Set a key’s TTL in milliseconds

PEXPIREAT

Set expiry as Unix ms timestamp

PEXPIRETIME

Get expiry as Unix ms timestamp

PTTL

Get TTL in milliseconds

RANDOMKEY

Return a random key

RENAME

Rename a key

RENAMENX

Rename a key if new key doesn’t exist

RESTORE

Deserialize and restore a key

SCAN

Incrementally iterate keys

TOUCH

Update last access time of keys

TTL

Get TTL in seconds

TYPE

Get the type of a key

UNLINK

Delete keys asynchronously

GEOADD

Add geospatial items

GEODIST

Get distance between two members

GEOHASH

Get geohash strings for members

GEOPOS

Get coordinates of members

GEORADIUS

Query members within radius

GEORADIUS_RO

Read-only radius query

GEORADIUSBYMEMBER

Radius query centered on member

GEORADIUSBYMEMBER_RO

Read-only radius query by member

GEOSEARCH

Search for members in an area

GEOSEARCHSTORE

Store geosearch results

HDEL

Delete one or more hash fields

HEXISTS

Check if a hash field exists

HEXPIRE

Set field TTL in seconds

HEXPIREAT

Set field expiry as timestamp

HEXPIRETIME

Get field expiry as timestamp

HGET

Get the value of a hash field

HGETALL

Get all fields and values

HGETDEL

Get and delete hash fields

HGETEX

Get fields and set their expiry

HINCRBY

Increment integer value of a field

HINCRBYFLOAT

Increment float value of a field

HKEYS

Get all fields in a hash

HLEN

Get number of fields in a hash

HMGET

Get values of multiple fields

HMSET

Set multiple hash fields

HPERSIST

Remove field expiration

HPEXPIRE

Set field TTL in milliseconds

HPEXPIREAT

Set field expiry as ms timestamp

HPEXPIRETIME

Get field expiry as ms timestamp

HPTTL

Get field TTL in milliseconds

HRANDFIELD

Get random fields from a hash

HSCAN

Incrementally iterate hash fields

HSET

Set hash field values

HSETEX

Set fields with expiration

HSETNX

Set field only if it doesn’t exist

HSTRLEN

Get length of a field’s value

HTTL

Get field TTL in seconds

HVALS

Get all values in a hash

PFADD

Add elements to HyperLogLog

PFCOUNT

Get estimated cardinality

PFMERGE

Merge multiple HyperLogLogs

JSON.ARRAPPEND

Append values to JSON array

JSON.ARRINDEX

Find index of value in array

JSON.ARRINSERT

Insert values into JSON array

JSON.ARRLEN

Get JSON array length

JSON.ARRPOP

Pop value from JSON array

JSON.ARRTRIM

Trim JSON array to range

JSON.CLEAR

Clear JSON values

JSON.DEL

Delete JSON values

JSON.FORGET

Alias for JSON.DEL

JSON.GET

Get JSON values

JSON.MERGE

Merge JSON values

JSON.MGET

Get values from multiple keys

JSON.MSET

Set values in multiple keys

JSON.NUMINCRBY

Increment JSON number

JSON.NUMMULTBY

Multiply JSON number

JSON.OBJKEYS

Get JSON object keys

JSON.OBJLEN

Get JSON object size

JSON.RESP

Get JSON in RESP format

JSON.SET

Set JSON value

JSON.STRAPPEND

Append to JSON string

JSON.STRLEN

Get JSON string length

JSON.TOGGLE

Toggle JSON boolean

JSON.TYPE

Get JSON value type

BLMOVE

Blocking list move

BLMPOP

Blocking pop from multiple lists

BLPOP

Blocking left pop

BRPOP

Blocking right pop

BRPOPLPUSH

Blocking pop and push

LINDEX

Get element by index

LINSERT

Insert before or after pivot

LLEN

Get list length

LMOVE

Move element between lists

LMPOP

Pop from multiple lists

LPOP

Pop from list head

LPOS

Find element position

LPUSH

Push to list head

LPUSHX

Push to head if list exists

LRANGE

Get range of elements

LREM

Remove elements by value

LSET

Set element at index

LTRIM

Trim list to range

RPOP

Pop from list tail

RPOPLPUSH

Pop from tail and push to head

RPUSH

Push to list tail

RPUSHX

Push to tail if list exists

PSUBSCRIBE

Subscribe to pattern channels

PUBLISH

Publish message to channel

PUBSUB

Inspect pub/sub state

PUNSUBSCRIBE

Unsubscribe from patterns

SUBSCRIBE

Subscribe to channels

UNSUBSCRIBE

Unsubscribe from channels

EVAL

Execute a Lua script

EVAL_RO

Execute read-only Lua script

EVALSHA

Execute cached Lua script by SHA

EVALSHA_RO

Read-only execute by SHA

SCRIPT EXISTS

Check if scripts exist in cache

SCRIPT FLUSH

Clear the script cache

SCRIPT LOAD

Load script into cache

ACL

Manage access control list

DBSIZE

Get number of keys in database

FLUSHALL

Delete all keys in all databases

FLUSHDB

Delete all keys in current database

MONITOR

Stream all commands received

TIME

Get current server time

SADD

Add members to a set

SCARD

Get set cardinality

SDIFF

Get set difference

SDIFFSTORE

Store set difference

SINTER

Get set intersection

SINTERCARD

Get intersection cardinality

SINTERSTORE

Store set intersection

SISMEMBER

Check if member exists in set

SMEMBERS

Get all set members

SMISMEMBER

Check multiple members

SMOVE

Move member between sets

SPOP

Remove random members

SRANDMEMBER

Get random members

SREM

Remove members from a set

SSCAN

Incrementally iterate set members

SUNION

Get set union

SUNIONSTORE

Store set union

BZMPOP

Blocking pop from sorted sets

BZPOPMAX

Blocking pop max score member

BZPOPMIN

Blocking pop min score member

ZADD

Add members with scores

ZCARD

Get sorted set cardinality

ZCOUNT

Count members in score range

ZDIFF

Get sorted set difference

ZDIFFSTORE

Store sorted set difference

ZINCRBY

Increment member’s score

ZINTER

Get sorted set intersection

ZINTERCARD

Get intersection cardinality

ZINTERSTORE

Store sorted set intersection

ZLEXCOUNT

Count members in lex range

ZMPOP

Pop members from sorted sets

ZMSCORE

Get scores of multiple members

ZPOPMAX

Pop members with highest scores

ZPOPMIN

Pop members with lowest scores

ZRANDMEMBER

Get random members

ZRANGE

Get members by index range

ZRANGEBYLEX

Get members by lex range

ZRANGEBYSCORE

Get members by score range

ZRANGESTORE

Store range result

ZRANK

Get member’s rank

ZREM

Remove members

ZREMRANGEBYLEX

Remove members by lex range

ZREMRANGEBYRANK

Remove members by rank range

ZREMRANGEBYSCORE

Remove members by score range

ZREVRANGE

Get members in reverse order

ZREVRANGEBYLEX

Reverse lex range query

ZREVRANGEBYSCORE

Reverse score range query

ZREVRANK

Get member’s reverse rank

ZSCAN

Incrementally iterate sorted set

ZSCORE

Get member’s score

ZUNION

Get sorted set union

ZUNIONSTORE

Store sorted set union

XACK

Acknowledge stream messages

XACKDEL

Acknowledge and delete messages

XADD

Add entry to stream

XAUTOCLAIM

Auto-claim idle messages

XCLAIM

Claim pending messages

XDEL

Delete stream entries

XDELEX

Delete entries with expiration

XGROUP

Manage consumer groups

XINFO CONSUMERS

List group consumers

XINFO GROUPS

List stream groups

XINFO STREAM

Get stream info

XLEN

Get stream length

XPENDING

Get pending messages info

XRANGE

Get range of stream entries

XREAD

Read stream entries

XREADGROUP

Read as consumer group

XREVRANGE

Get range in reverse order

XTRIM

Trim stream to max length

APPEND

Append value to a string

DECR

Decrement integer value by 1

DECRBY

Decrement integer by amount

GET

Get string value

GETDEL

Get value and delete key

GETEX

Get value and set expiration

GETRANGE

Get substring of string

GETSET

Set value and return old value

INCR

Increment integer value by 1

INCRBY

Increment integer by amount

INCRBYFLOAT

Increment float by amount

MGET

Get values of multiple keys

MSET

Set multiple keys at once

MSETNX

Set multiple keys if none exist

PSETEX

Set value with ms expiration

SET

Set string value

SETEX

Set value with expiration

SETNX

Set value if key doesn’t exist

SETRANGE

Overwrite part of string

STRLEN

Get string length

DISCARD

Discard queued commands

EXEC

Execute queued commands

MULTI

Start a transaction

UNWATCH

Unwatch all keys

WATCH

Watch keys for changes

We run command integration tests from the following Redis clients after each code change and also periodically: