308 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			308 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
 | 
						|
# 🔑 Redis `HSET` and Related Hash Commands
 | 
						|
 | 
						|
## 1. `HSET`
 | 
						|
 | 
						|
* **Purpose**: Set the value of one or more fields in a hash.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HSET key field value [field value ...]
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * Integer: number of fields that were newly added.
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *4
 | 
						|
  $4
 | 
						|
  HSET
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  $5
 | 
						|
  field
 | 
						|
  $5
 | 
						|
  value
 | 
						|
  ```
 | 
						|
 | 
						|
  (If multiple field-value pairs: `*6`, `*8`, etc.)
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## 2. `HSETNX`
 | 
						|
 | 
						|
* **Purpose**: Set the value of a hash field only if it does **not** exist.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HSETNX key field value
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * `1` if field was set.
 | 
						|
  * `0` if field already exists.
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *4
 | 
						|
  $6
 | 
						|
  HSETNX
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  $5
 | 
						|
  field
 | 
						|
  $5
 | 
						|
  value
 | 
						|
  ```
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## 3. `HGET`
 | 
						|
 | 
						|
* **Purpose**: Get the value of a hash field.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HGET key field
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * Bulk string (value) or `nil` if field does not exist.
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *3
 | 
						|
  $4
 | 
						|
  HGET
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  $5
 | 
						|
  field
 | 
						|
  ```
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## 4. `HGETALL`
 | 
						|
 | 
						|
* **Purpose**: Get all fields and values in a hash.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HGETALL key
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * Array of `[field1, value1, field2, value2, ...]`.
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *2
 | 
						|
  $7
 | 
						|
  HGETALL
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  ```
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## 5. `HMSET` (⚠️ Deprecated, use `HSET`)
 | 
						|
 | 
						|
* **Purpose**: Set multiple field-value pairs.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HMSET key field value [field value ...]
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * Always `OK`.
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *6
 | 
						|
  $5
 | 
						|
  HMSET
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  $5
 | 
						|
  field
 | 
						|
  $5
 | 
						|
  value
 | 
						|
  $5
 | 
						|
  field2
 | 
						|
  $5
 | 
						|
  value2
 | 
						|
  ```
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## 6. `HMGET`
 | 
						|
 | 
						|
* **Purpose**: Get values of multiple fields.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HMGET key field [field ...]
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * Array of values (bulk strings or nils).
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *4
 | 
						|
  $5
 | 
						|
  HMGET
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  $5
 | 
						|
  field1
 | 
						|
  $5
 | 
						|
  field2
 | 
						|
  ```
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## 7. `HDEL`
 | 
						|
 | 
						|
* **Purpose**: Delete one or more fields from a hash.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HDEL key field [field ...]
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * Integer: number of fields removed.
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *3
 | 
						|
  $4
 | 
						|
  HDEL
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  $5
 | 
						|
  field
 | 
						|
  ```
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## 8. `HEXISTS`
 | 
						|
 | 
						|
* **Purpose**: Check if a field exists.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HEXISTS key field
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * `1` if exists, `0` if not.
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *3
 | 
						|
  $7
 | 
						|
  HEXISTS
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  $5
 | 
						|
  field
 | 
						|
  ```
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## 9. `HKEYS`
 | 
						|
 | 
						|
* **Purpose**: Get all field names in a hash.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HKEYS key
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * Array of field names.
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *2
 | 
						|
  $5
 | 
						|
  HKEYS
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  ```
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## 10. `HVALS`
 | 
						|
 | 
						|
* **Purpose**: Get all values in a hash.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HVALS key
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * Array of values.
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *2
 | 
						|
  $5
 | 
						|
  HVALS
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  ```
 | 
						|
 | 
						|
---
 | 
						|
 | 
						|
## 11. `HLEN`
 | 
						|
 | 
						|
* **Purpose**: Get number of fields in a hash.
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HLEN key
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * Integer: number of fields.
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *2
 | 
						|
  $4
 | 
						|
  HLEN
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  ```
 | 
						|
 | 
						|
 | 
						|
 | 
						|
## 12. `HSCAN`
 | 
						|
 | 
						|
* **Purpose**: Iterate fields/values of a hash (cursor-based scan).
 | 
						|
* **Syntax**:
 | 
						|
 | 
						|
  ```bash
 | 
						|
  HSCAN key cursor [MATCH pattern] [COUNT count]
 | 
						|
  ```
 | 
						|
* **Return**:
 | 
						|
 | 
						|
  * Array: `[new-cursor, [field1, value1, ...]]`
 | 
						|
* **RESP Protocol**:
 | 
						|
 | 
						|
  ```
 | 
						|
  *3
 | 
						|
  $5
 | 
						|
  HSCAN
 | 
						|
  $3
 | 
						|
  key
 | 
						|
  $1
 | 
						|
  0
 | 
						|
  ```
 |