什麼是redis的hash數據結構?
- redis的hash數據結構,其實就是string的升級版,它把string 數據結構的key value,中的value類型升級爲hash(和java的hash一樣的結構)
Map<String, HashMap<String,String>> hash=new HashMap<String,HashMap<String,String>>(); - 每個 hash的存儲大小: 可以存儲 2的(32 - 1)方的 鍵值對(40多億)
redis的hash結構經典場景:存儲java對象
把一個Product對象,存儲進redis的hash結構
@Data
public class Product {
//商品id
private Long id;
//商品名稱
private String name;
//商品價格
private Integer price;
//商品詳情
private String detail;
}
HSET key field value
將哈希表 key 中的字段 field 的值設爲 value 。
HGET key field
獲取存儲在哈希表中指定字段的值。
127.0.0.1:6379> hset product:100 name iphone11
(integer) 1
127.0.0.1:6379> hget product:100 name
"iphone11"
HMSET key field1 value1 [field2 value2 ]
同時將多個 field-value (域-值)對設置到哈希表 key 中。
HMGET key field1 [field2 field3 …]
獲取所有給定字段的值
127.0.0.1:6379> hmset product:100 price 5000 detail "I love iphone"
OK
127.0.0.1:6379> hmget product:100 name price detail
1) "iphone11"
2) "5000"
3) "I love iphone"
HKEYS key
獲取指定hash中所有field值
127.0.0.1:6379> hkeys product:100
1) "name"
2) "price"
3) "detail"
HVALS key
獲取指定hash中所有value值
127.0.0.1:6379> hvals product:100
1) "iphone11"
2) "5000"
3) "I love iphone"
HGETALL key
獲取指定hash中所有field、value值
127.0.0.1:6379> hgetall product:100
1) "name"
2) "iphone11"
3) "price"
4) "5000"
5) "detail"
6) "I love iphone"
HLEN key
獲取指定hash中元素的個數
127.0.0.1:6379> hlen product:100
(integer) 3
HINCRBY key field data (整形)
給指定 field 對應的 value 值加上 data 數值
HINCRBYFLOAT key field data(浮點數)
給指定 field 對應的 value 值加上 data 數值
127.0.0.1:6379> hincrby product:100 price 100
(integer) 5100
127.0.0.1:6379> hgetall product:100
1) "name"
2) "iphone11"
3) "price"
4) "5100"
5) "detail"
6) "I love iphone"
HEXISTS key field
檢查指定的field是否存在
127.0.0.1:6379> hexists product:100 name
(integer) 1
HDEL key field1 [field2 fiedl3 …]
刪除一個或多個哈希表字段
127.0.0.1:6379> hdel product:100 name
(integer) 1
127.0.0.1:6379> hgetall product:100
1) "price"
2) "5100"
3) "detail"
4) "I love iphone"