Learn

Redis Commands Cheat sheet

Prasan Kumar
Author
Prasan Kumar, Technical Solutions Developer at Redis
Will Johnston
Author
Will Johnston, Developer Growth Manager at Redis

Connect#

# Syntax
redis-cli -u redis://host:port
redis-cli -u redis://username:password@host:port

# Examples
redis-cli
redis-cli -u redis://localhost:6379
redis-cli -u redis://myuser:mypassword@localhost:6379

# If you run Redis through Docker
docker exec -it <container-id-or-name> redis-cli
NOTE

To setup Redis either locally or in the cloud, refer to the tutorial

Strings/Numbers#

Command

Syntax

Example

Output

SET

SET key value

SET myKey "Hello"

"OK"

Description: Set key to hold the string value. If key already holds a value, it is overwritten, regardless of its type.Time Complexity: O(1)

GET

GET key

GET myKey

"Hello"

Description: Get the string value of key. If the key does not exist the special value nil is returned.Time Complexity: O(1)

MGET

MGET key [key ...]

MGET myKey nonExistentKey

1) "Hello" 2) (nil)

Description: Returns the values of all specified keys. For every key that does not hold a string value or does not exist, the special value nil is returned.Time Complexity: O(N)

INCR

INCR key

INCR myCounter

(integer) 1

Description: Increments the number stored at key by one. If the key does not exist, it is set to 0 before performing the operation.Time Complexity: O(1)

Generic#

Command

Syntax

Example

Output

KEYS

KEYS pattern

KEYS my*

1) "myKey" 2) "myCounter"

Description: Returns all keys matching pattern.Time Complexity: O(N)

EXISTS

EXISTS key [key ...]

EXISTS myKey

(integer) 1

Description: Checks if one or more keys exist.Time Complexity: O(N)

EXPIRE

EXPIRE key seconds

EXPIRE myKey 120

(integer) 1

Description: Set a timeout on a key.After the timeout has expired, the key will automatically be deleted.Time Complexity:O(1)

TTL

TTL key

TTL myKey

(integer) 113

Description: Returns the remaining time to live of a key that has a timeout.Time Complexity: O(1)

PERSIST

PERSIST key

PERSIST myKey

(integer) 1

Description: Removes the expiration from a key.Time Complexity:O(1)

SCAN

SCAN cursor [MATCH pattern] [COUNT count]

SCAN 0 MATCH my* COUNT 2

1) "3" 2) 1) "myCounter" 2) "myKey"

Description: Iterates the set of keys in the currently selected Redis database.Time Complexity: O(1) for every call. O(N) for a complete iteration.

DEL

DEL key [key ...]

DEL myKey

(integer) 1

Description: Removes the specified keys.Time Complexity: O(N)

INFO

INFO [section]

INFO server
INFO keyspace

# Server

redis_version:6.2.5

redis_git_sha1:00000000

redis_build_id:9893b2a-dirty

redis_mode:standalone

os:Linux 5.4.72-microsoft-standard-WSL2 x86_64

arch_bits:64

...

# Keyspace db0:keys=2,expires=0,avg_ttl=0

Description:Returns information and statistics about the server, with the different sections like - server, clients, memory, persistence, stats, replication, cpu, commandstats, latencystats, sentinel, cluster, modules, keyspace, errorstats.Time Complexity: O(1)

Hashes#

Command

Syntax

Example

Output

HSET

HSET key field value [field value ...]

HSET h_employee_profile:101 name "Nicol" age 33

(integer) 2

Description: Sets the specified fields to their respective values in the hash stored at key.Time Complexity: O(N)

HGET

HGET key field

HGET h_employee_profile:101 name

"Nicol"

Description: Returns the value associated with field in the hash stored at key.Time Complexity: O(1)

HGETALL

HGETALL key

HGETALL h_employee_profile:101

1) "name" 2) "Nicol" 3) "age" 4) "33"

Description: Returns all fields and values of the hash stored at key.Time Complexity: O(N)

HMGET

HMGET key field1 [field2]

HMGET h_employee_profile:101 name age

1) "Nicol" 2) "33"

Description: Returns the values associated with the specified fields in the hash stored at key.Time Complexity: O(N)

Sets#

Command

Syntax

Example

Output

XADD

XADD key field value [field value ...]

XADD myStream * sensorId "1234" temperature "19.8"

1518951480106-0

Description: Appends the specified stream entry to the stream at the specified key. Time Complexity: O(1) when adding a new entry.

XREAD

XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...]

XREAD COUNT 2 STREAMS myStream 0

1) 1) "myStream" 2) 1) 1) "1518951480106-0" 2) 1) "sensorId" 2) "1234" 3) "temperature" 4) "19.8"

Description: Read data from one or multiple streams, only returning entries with an ID greater than the last received ID reported by the caller.

XRANGE

XRANGE key start end [COUNT count]

XRANGE myStream 1518951480106-0 1518951480106-0

1) 1) 1) "1518951480106-0" 2) 1) "sensorId" 2) "1234" 3) "temperature" 4) "19.8"

Description: Returns the entries matching a range of IDs in a stream. Time Complexity: O(N) with N being the number of elements being returned. If N is constant (e.g. always asking for the first 10 elements with COUNT), you can consider it O(1).

XLEN

XLEN key

XLEN myStream

(integer) 1

Description: Returns the number of entries of a stream. Time Complexity: O(1)

XDEL

XDEL key ID [ID ...]

XDEL myStream 1518951480106-0

(integer) 1

Description: Removes the specified entries from a stream. Time Complexity: O(1) for each single item to delete in the stream

XTRIM

XTRIM key MAXLEN [~] count

XTRIM myStream MAXLEN 0

(integer) 0

Description: Trims the stream to a different length. Time Complexity: O(N), with N being the number of evicted entries. Constant times are very small however, since entries are organized in macro nodes containing multiple entries that can be released with a single deallocation.

Sorted sets#

Command

Syntax

Example

Output

ZADD

ZADD key score member [score member ...]

ZADD myZSet 1 "one" 2 "two"

(integer) 2

Description: Adds all the specified members with the specified scores to the sorted set stored at key. Time Complexity: O(log(N))

ZRANGE

ZRANGE key start stop [WITHSCORES]

ZRANGE myZSet 0 -1

1) "one" 2)"two"

Description: Returns the specified range of elements in the sorted set stored at key.Time Complexity: O(log(N)+M) where M is the number of elements returned

Lists#

Command

Syntax

Example

Output

LPUSH

LPUSH key value [value ...]

LPUSH myList "World"

(integer) 1

Description: Inserts the specified values at the head of the list stored at key. Time Complexity: O(N)

RPUSH

RPUSH key value [value ...]

RPUSH myList "Hello"

(integer) 2

Description: Inserts the specified values at the tail of the list stored at key.Time Complexity: O(N)

LRANGE

LRANGE key start stop

LRANGE myList 0 -1

1) "World" 2) "Hello"

Description: Returns the specified elements of the list stored at key.Time Complexity: O(S+N) where S is the distance of start and N is the number of elements in the specified range.

LLEN

LLEN key

LLEN myList

(integer) 2

Description: Returns the length of the list stored at key.Time Complexity: O(1)

LPOP

LPOP key [count]

LPOP myList

"World"

Description: Removes and returns the first element of the list stored at key.Time Complexity: O(N)

RPOP

RPOP key [count]

RPOP myList

"Hello"

Description: Removes and returns the last element of the list stored at key.Time Complexity: O(N)

Streams#

Command

Syntax

Example

Output

LPUSH

LPUSH key value [value ...]

LPUSH myList "World"

(integer) 1

Description: Inserts the specified values at the head of the list stored at key. Time Complexity: O(N)

RPUSH

RPUSH key value [value ...]

RPUSH myList "Hello"

(integer) 2

Description: Inserts the specified values at the tail of the list stored at key.Time Complexity: O(N)

LRANGE

LRANGE key start stop

LRANGE myList 0 -1

1) "World" 2) "Hello"

Description: Returns the specified elements of the list stored at key.Time Complexity: O(S+N) where S is the distance of start and N is the number of elements in the specified range.

LLEN

LLEN key

LLEN myList

(integer) 2

Description: Returns the length of the list stored at key.Time Complexity: O(1)

LPOP

LPOP key [count]

LPOP myList

"World"

Description: Removes and returns the first element of the list stored at key.Time Complexity: O(N)

RPOP

RPOP key [count]

RPOP myList

"Hello"

Description: Removes and returns the last element of the list stored at key.Time Complexity: O(N)

REDIS STACK COMMANDS

Redis stack extends the core features of Redis OSS like querying across hashes and JSON documents, time series data support, full-text search ..etc

JSON#

Command

Syntax

Example

Output

JSON.SET

JSON.SET key path value

JSON.SET employee_profile:1 . '{"name":"Alice"}'

OK

Description: Sets JSON value at path in key.Time Complexity: O(M+N) where M is the original size and N is the new size

JSON.GET

JSON.GET key [path [path ...]]

JSON.GET employee_profile:1
{ "name": 'Alice' }

Description: Returns the JSON value at path in key.Time Complexity: O(N) when path is evaluated to a single value where N is the size of the value, O(N) when path is evaluated to multiple values, where N is the size of the key

JSON.NUMINCRBY

JSON.NUMINCRBY key path number

JSON.SET employee_profile:1 .age 30
JSON.NUMINCRBY employee_profile:1 .age 5

35

Description: Increments a number inside a JSON document.Time Complexity: O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key

JSON.OBJKEYS

JSON.OBJKEYS key [path]

JSON.OBJKEYS employee_profile:1

1) "name" 2) "age"

Description: Return the keys in the object that's referenced by path. Time Complexity: O(N) when path is evaluated to a single value, where N is the number of keys in the object, O(N) when path is evaluated to multiple values, where N is the size of the key

JSON.OBJLEN

JSON.OBJLEN key [path]

JSON.OBJLEN employee_profile:1

(integer) 2

Description: Report the number of keys in the JSON object at path in key. Time Complexity: O(1) when path is evaluated to a single value, O(N) when path is evaluated to multiple values, where N is the size of the key

JSON.ARRAPPEND

JSON.ARRAPPEND key [path] value [value ...]

JSON.SET employee_profile:1 .colors '["red", "green", "blue"]'
JSON.ARRAPPEND employee_profile:1 .colors '"yellow"'

(integer) 4

Description: Append the json values into the array at path after the last element in it. Time Complexity: O(1) for each value added, O(N) for multiple values added where N is the size of the key

JSON.ARRINSERT

JSON.ARRINSERT key path index value [value ...]

JSON.ARRINSERT employee_profile:1 .colors 2 '"purple"'

(integer) 5

Description: Insert the json values into the array at path before the index (shifts to the right). Time Complexity: O(N) when path is evaluated to a single value where N is the size of the array, O(N) when path is evaluated to multiple values, where N is the size of the key

JSON.ARRINDEX

JSON.ARRINDEX key path value [start [stop]]

JSON.ARRINDEX employee_profile:1 .colors '"purple"'

(integer) 2

Description: Searches for the first occurrence of a JSON value in an array. Time Complexity: O(N) when path is evaluated to a single value where N is the size of the array, O(N) when path is evaluated to multiple values, where N is the size of the key

Search and Query#

Command

Syntax

Example

Output

FT.CREATE

FT.CREATE index
  [ON HASH | JSON]
  [PREFIX count prefix [prefix ...]]
  [FILTER {filter}]
  SCHEMA
  field_name [AS alias] TEXT | TAG | NUMERIC | GEO | VECTOR | GEOSHAPE [ SORTABLE [UNF]]
  [NOINDEX]
   ...

FT.CREATE staff:index
    ON JSON
    PREFIX 1 staff:
    SCHEMA
    "$.name" AS name TEXT
    "$.age" AS age NUMERIC
    "$.isSingle"  AS isSingle TAG
    '$["skills"][*]' AS skills TAG SEPARATOR "|"

OK

Description: Create an index with the given specification.Time Complexity: O(K) where K is the number of fields in the document, O(N) for keys in the keySpace

FT.SEARCH

FT.SEARCH index query
  [FILTER numeric_field min max [ FILTER numeric_field min max ...]]
  [RETURN count identifier [AS property] [ identifier [AS property] ...]]
  [SORTBY sortby [ ASC | DESC] [WITHCOUNT]]
  [LIMIT offset num]
  [PARAMS nargs name value [ name value ...]]
JSON.SET "staff:1" "$" '{"name":"Bob","age":22,"isSingle":true,"skills":["NodeJS","MongoDB","React"]}' 

JSON.SET "staff:2" "$" '{"name":"Alex","age":45,"isSingle":true,"skills":["Python","MySQL","Angular"]}' 

FT.SEARCH staff:index
  "(@name:'alex')"
  RETURN 1 $ LIMIT 0 10 

FT.SEARCH staff:index
  "((@isSingle:{true}) (@age:[(18 +inf]))"
  RETURN 1 $ LIMIT 0 10

Matching documents data

Description: Search the index with a query, returning either documents or just ids. Time Complexity: O(N)

FT.AGGREGATE

FT.AGGREGATE index query
  [LOAD count field [field ...]]
  [ GROUPBY nargs property [property ...] [ REDUCE function nargs arg [arg ...] [AS name] ...
  [ SORTBY nargs [ property ASC | DESC [ property ASC | DESC ...]] [MAX num] [WITHCOUNT]
  [ APPLY expression AS name  ...
  [ LIMIT offset num]
  [FILTER filter]
  [ PARAMS nargs name value [ name value ...]]
FT.AGGREGATE staff:index "(@age:[(18 +inf])"
  GROUPBY 1 @age
  	REDUCE COUNT_DISTINCT 1 @name AS staff_count
    | age | staff_count |
    | ----| ------------|
    | 22  | 1           |
    | 45  | 1           |

Description: Run a search query on an index, and perform aggregate transformations on the results.

FT.INFO

FT.INFO index

FT.INFO staff:index

A list of configuration parameters and stats for the index.

Description: Return information and statistics on the index.Time Complexity: O(1)

FT.DROPINDEX

FT.DROPINDEX index [DD]

FT.DROPINDEX staff:index

OK

Description: Dropping existing index.Time Complexity:O(1) or O(N) if documents are deleted, where N is the number of keys in the keyspace