Hashes
Hash commands for storing field-value pairs within a single key.
Commands
Section titled âCommandsâ| Command | Syntax | Description |
|---|---|---|
| HSET | HSET key field value [field value ...] | Set field(s) |
| HGET | HGET key field | Get field value |
| HMGET | HMGET key field [field ...] | Get multiple field values |
| HGETALL | HGETALL key | Get all fields and values |
| HDEL | HDEL key field [field ...] | Delete field(s) |
| HEXISTS | HEXISTS key field | Check if field exists |
| HKEYS | HKEYS key | Get all field names |
| HVALS | HVALS key | Get all values |
| HLEN | HLEN key | Count fields |
| HINCRBY | HINCRBY key field increment | Increment field by integer |
| HINCRBYFLOAT | HINCRBYFLOAT key field increment | Increment field by float |
| HSETNX | HSETNX key field value | Set field only if not exists |
Examples
Section titled âExamplesâBasic Operations
Section titled âBasic Operationsâ# Set single field127.0.0.1:6379> HSET user:1 name "Alice"(integer) 1
# Set multiple fields127.0.0.1:6379> HSET user:1 email "alice@example.com" age "30"(integer) 2
# Get single field127.0.0.1:6379> HGET user:1 name"Alice"
# Get multiple fields127.0.0.1:6379> HMGET user:1 name email1) "Alice"2) "alice@example.com"
# Get all fields and values127.0.0.1:6379> HGETALL user:11) "name"2) "Alice"3) "email"4) "alice@example.com"5) "age"6) "30"Field Management
Section titled âField Managementâ# Check if field exists127.0.0.1:6379> HEXISTS user:1 name(integer) 1127.0.0.1:6379> HEXISTS user:1 phone(integer) 0
# Get all field names127.0.0.1:6379> HKEYS user:11) "name"2) "email"3) "age"
# Get all values127.0.0.1:6379> HVALS user:11) "Alice"2) "alice@example.com"3) "30"
# Count fields127.0.0.1:6379> HLEN user:1(integer) 3
# Delete field127.0.0.1:6379> HDEL user:1 age(integer) 1Counters in Hashes
Section titled âCounters in Hashesâ# Increment integer field127.0.0.1:6379> HSET stats:page views 0(integer) 1127.0.0.1:6379> HINCRBY stats:page views 1(integer) 1127.0.0.1:6379> HINCRBY stats:page views 10(integer) 11
# Increment float field127.0.0.1:6379> HSET product:1 price 9.99(integer) 1127.0.0.1:6379> HINCRBYFLOAT product:1 price 0.50"10.49"Conditional Set
Section titled âConditional Setâ# Only set if field doesn't exist127.0.0.1:6379> HSETNX user:1 email "alice@example.com"(integer) 0 # Field exists, not set127.0.0.1:6379> HSETNX user:1 phone "555-1234"(integer) 1 # Field createdLibrary Mode (Rust)
Section titled âLibrary Mode (Rust)âuse redlite::Db;
let db = Db::open("mydata.db")?;
// Set fieldsdb.hset("user:1", &[("name", b"Alice"), ("email", b"alice@example.com")])?;
// Get single fieldlet name = db.hget("user:1", "name")?; // Some(b"Alice".to_vec())
// Get multiple fieldslet values = db.hmget("user:1", &["name", "email"])?;
// Get all fields and valueslet all = db.hgetall("user:1")?; // Vec<(String, Vec<u8>)>
// Check existencelet exists = db.hexists("user:1", "name")?;
// Incrementdb.hincrby("stats:page", "views", 1)?;
// Delete fielddb.hdel("user:1", &["age"])?;Use Cases
Section titled âUse CasesâUser Profiles
Section titled âUser ProfilesâHSET user:1000 username "alice" email "alice@example.com" created_at "2024-01-01"HGET user:1000 usernameHGETALL user:1000Configuration Storage
Section titled âConfiguration StorageâHSET config:app debug "false" timeout "30" max_connections "100"HGET config:app timeoutObject Storage
Section titled âObject StorageâHSET product:123 name "Widget" price "29.99" stock "50"HINCRBY product:123 stock -1 # Decrement stock on sale