Skip to content

Redis

Open-source, in-memory data structure store.

Connecting to Redis

COMMANDDESCRIPTION
redis-cliConnect to local Redis
redis-cli -h host -p portConnect to remote Redis
redis-cli -a passwordConnect with password
redis-cli -u redis://user:password@host:portConnect with URL
exit or quitExit Redis CLI

Key Operations

COMMANDDESCRIPTION
SET key valueSet key-value pair
GET keyGet value by key
DEL keyDelete key
EXISTS keyCheck if key exists
EXPIRE key secondsSet expiration time
TTL keyGet time to live
EXPIREAT key timestampSet expiration at timestamp
PERSIST keyRemove expiration
RENAME oldkey newkeyRename key
TYPE keyGet data type of key
KEYS patternFind keys by pattern
SCAN cursor MATCH pattern COUNT countIterate keys

Strings

COMMANDDESCRIPTION
SET key valueSet string value
GET keyGet string value
GETSET key valueGet and set value
MGET key1 key2 ...Get multiple values
MSET key1 val1 key2 val2Set multiple values
INCR keyIncrement by 1
INCRBY key amountIncrement by amount
DECR keyDecrement by 1
DECRBY key amountDecrement by amount
APPEND key valueAppend to string
STRLEN keyGet string length
SETRANGE key offset valueSet substring
GETRANGE key start endGet substring

Hashes

COMMANDDESCRIPTION
HSET key field valueSet hash field
HGET key fieldGet hash field
HMSET key f1 v1 f2 v2Set multiple fields
HMGET key f1 f2Get multiple fields
HGETALL keyGet all fields and values
HDEL key fieldDelete field
HEXISTS key fieldCheck if field exists
HKEYS keyGet all fields
HVALS keyGet all values
HLEN keyGet number of fields
HINCRBY key field amountIncrement field by amount

Lists

COMMANDDESCRIPTION
LPUSH key value1 value2Push to left
RPUSH key value1 value2Push to right
LPOP keyPop from left
RPOP keyPop from right
LRANGE key start stopGet range
LLEN keyGet list length
LINDEX key indexGet by index
LSET key index valueSet by index
`LINSERT key BEFOREAFTER pivot value`
LREM key count valueRemove elements
LTRIM key start stopTrim list

Sets

COMMANDDESCRIPTION
SADD key member1 member2Add members
SREM key memberRemove member
SMEMBERS keyGet all members
SISMEMBER key memberCheck if member exists
SCARD keyGet set size
SPOP keyGet and remove random member
SRANDMEMBER key countGet random members
SINTER key1 key2Intersection
SUNION key1 key2Union
SDIFF key1 key2Difference
SMOVE source destination memberMove member

Sorted Sets

COMMANDDESCRIPTION
ZADD key score1 member1 score2 member2Add members with scores
ZREM key memberRemove member
ZSCORE key memberGet score
ZRANGE key start stopGet range by rank
ZRANGE key start stop WITHSCORESGet range with scores
ZREVRANGE key start stopGet range reversed
ZRANK key memberGet rank
ZREVRANK key memberGet reverse rank
ZCOUNT key min maxCount members in score range
ZRANGEBYSCORE key min maxGet by score range
ZINCRBY key increment memberIncrement score
ZCARD keyGet number of members
ZREM key memberRemove member

Bitmaps

COMMANDDESCRIPTION
SETBIT key offset valueSet bit at offset
GETBIT key offsetGet bit at offset
BITCOUNT keyCount set bits
BITOP AND dest key1 key2Bitwise operations
BITPOS key bitFind first bit

HyperLogLog

COMMANDDESCRIPTION
PFADD key element1 element2Add elements
PFCOUNT keyCount unique elements
PFMERGE dest key1 key2Merge HyperLogLogs

Transactions

bash
# Start transaction
MULTI

# Queue commands
SET key1 value1
SET key2 value2

# Execute transaction
EXEC

# Discard transaction
DISCARD

Pub/Sub

Publishing

bash
# Publish message
PUBLISH channel "message"

Subscribing

bash
# Subscribe to channel
SUBSCRIBE channel1 channel2

# Unsubscribe
UNSUBSCRIBE channel

# Pattern subscribe
PSUBSCRIBE news.*

Server Operations

COMMANDDESCRIPTION
DBSIZEGet number of keys in database
FLUSHDBDelete all keys in current database
FLUSHALLDelete all keys in all databases
SAVESave to disk
BGSAVESave to disk in background
LASTSAVEGet last save timestamp
SHUTDOWNShutdown server
INFOGet server info
CLIENT LISTList connected clients
CLIENT KILL ip:portKill client connection

Configuration

COMMANDDESCRIPTION
CONFIG GET parameterGet configuration
CONFIG SET parameter valueSet configuration
CONFIG RESETSTATReset statistics
CONFIG REWRITERewrite config file

Useful Queries

Get all keys

bash
KEYS *

Get keys by pattern

bash
KEYS user:*

Get Redis info

bash
INFO

INFO memory
INFO replication
INFO stats

Monitor commands

bash
MONITOR

Scan large datasets

bash
SCAN 0 MATCH user:* COUNT 100

Get memory usage

bash
MEMORY USAGE key

Persistence

RDB (Snapshot)

bash
# Enable RDB
CONFIG SET save "900 1 300 10 60 10000"

# Force save
SAVE
BGSAVE

AOF (Append Only File)

bash
# Enable AOF
CONFIG SET appendonly yes

# Rewrite AOF
BGREWRITEAOF

Cluster

COMMANDDESCRIPTION
CLUSTER NODESList cluster nodes
CLUSTER INFOGet cluster info
CLUSTER MEET ip portMeet a node
CLUSTER ADDSLOTS slot1 slot2Add slots to node
CLUSTER REPLICATE node_idReplicate node
CLUSTER FAILOVERManual failover

Lua Scripting

bash
# Execute Lua script
EVAL "return redis.call('SET', KEYS[1], ARGV[1])" 1 key value

# Load and execute script
SCRIPT LOAD "return redis.call('GET', KEYS[1])"
EVALSHA <sha> 1 key

Best Practices

  • Use appropriate data types for your use case
  • Set expiration times to prevent memory bloat
  • Use pipelining for multiple commands
  • Use transactions for atomic operations
  • Monitor memory usage with INFO memory
  • Use connection pooling in applications
  • Regularly backup Redis data
  • Use Redis Cluster for high availability
  • Use appropriate eviction policies
  • Monitor slow queries with SLOWLOG
  • Use Redis Sentinel for automatic failover
  • Compress large values stored in Redis

TIP

Use SCAN instead of KEYS for large datasets to avoid blocking the server.

Released under MIT License.