3.2 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			3.2 KiB
		
	
	
	
	
	
	
	
Got it 👍 — let’s break this down properly.
Redis has two broad classes you’re asking about:
- Basic key-space functions (SET, GET, DEL, EXISTS, etc.)
- Iteration commands (SCAN,SSCAN,HSCAN,ZSCAN)
And for each I’ll show:
- What it does
- How it works at a high level
- Its RESP protocol implementation (the actual wire format).
1. Basic Key-Space Commands
SET key value
- Stores a string value at a key.
- Overwrites if the key already exists.
Protocol (RESP2):
*3
$3
SET
$3
foo
$3
bar
(client sends: array of 3 bulk strings: ["SET", "foo", "bar"])
Reply:
+OK
GET key
- Retrieves the string value stored at the key.
- Returns nilif key doesn’t exist.
Protocol:
*2
$3
GET
$3
foo
Reply:
$3
bar
(or $-1 for nil)
DEL key [key ...]
- Removes one or more keys.
- Returns number of keys actually removed.
Protocol:
*2
$3
DEL
$3
foo
Reply:
:1
(integer reply = number of deleted keys)
EXISTS key [key ...]
- Checks if one or more keys exist.
- Returns count of existing keys.
Protocol:
*2
$6
EXISTS
$3
foo
Reply:
:1
KEYS pattern
- Returns all keys matching a glob-style pattern.
⚠️ Not efficient in production (O(N)), better to use SCAN.
Protocol:
*2
$4
KEYS
$1
*
Reply:
*2
$3
foo
$3
bar
(array of bulk strings with key names)
2. Iteration Commands (SCAN family)
SCAN cursor [MATCH pattern] [COUNT n]
- Iterates the keyspace incrementally.
- Client keeps sending back the cursor from previous call until it returns 0.
Protocol example:
*2
$4
SCAN
$1
0
Reply:
*2
$1
0
*2
$3
foo
$3
bar
Explanation:
- First element = new cursor ("0"means iteration finished).
- Second element = array of keys returned in this batch.
HSCAN key cursor [MATCH pattern] [COUNT n]
- Like SCAN, but iterates fields of a hash.
Protocol:
*3
$5
HSCAN
$3
myh
$1
0
Reply:
*2
$1
0
*4
$5
field
$5
value
$5
age
$2
42
(Array of alternating field/value pairs)
SSCAN key cursor [MATCH pattern] [COUNT n]
- Iterates members of a set.
Protocol and reply structure same as SCAN.
ZSCAN key cursor [MATCH pattern] [COUNT n]
- Iterates members of a sorted set with scores.
- Returns alternating member,score.
Quick Comparison
| Command | Purpose | Return Type | 
|---|---|---|
| SET | Store a string value | Simple string +OK | 
| GET | Retrieve a string value | Bulk string / nil | 
| DEL | Delete keys | Integer (count) | 
| EXISTS | Check existence | Integer (count) | 
| KEYS | List all matching keys (slow) | Array of bulk strings | 
| SCAN | Iterate over keys (safe) | [cursor, array] | 
| HSCAN | Iterate over hash fields | [cursor, array] | 
| SSCAN | Iterate over set members | [cursor, array] | 
| ZSCAN | Iterate over sorted set | [cursor, array] |