redis 哈希(Hash)

1、概述

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储2^{32} - 1 键值对(40多亿)。

2、常见命令

HDEL key field [field ...]:删除一个或多个Hash的field

HEXISTS key field:判断field是否存在于hash中

HGET key field: 获取hash中field的值

HGETALL key:从hash中读取全部的域和值

HINCRBY key field increment:将hash中指定域的值增加给定的数字

HINCRBYFLOAT key field increment:将hash中指定域的值增加给定的浮点数

HKEYS key:获取hash的所有字段

HLEN key:获取hash里所有字段的数量

HMGET key field [field ...] :   获取hash里面指定字段的值 
HMSET key field value [field value ...]:    设置hash字段值  注意:当向同一个对象的同一个属性赋多个值时,会覆盖。不同属性时,会拼接
HSET key field value:    设置hash里面一个字段的值    
HSETNX key field value :   设置hash的一个字段,只有当这个字段不存在时有效  
HSTRLEN key field:    获取hash里面指定field的长度  
HVALS key:    获得hash的所有值  
HSCAN key cursor [MATCH pattern] [COUNT count]:    迭代hash里面的元素。可用版本>=2.8.0     

3、命令使用  

127.0.0.1:6379> hmset user id 1 name zyw sex 1
OK
//第二条命令覆盖第一条
127.0.0.1:6379> hmset user id 2 name lisi sex 0
OK
127.0.0.1:6379> hget user id
"2"
127.0.0.1:6379> hgetall user
1) "id"
2) "2"
3) "name"
4) "lisi"
5) "sex"
6) "0"
127.0.0.1:6379> hlen user
(integer) 3
127.0.0.1:6379> del user
(integer) 1
127.0.0.1:6379> hmset user:1 id 1 name zyw sex 1
OK
127.0.0.1:6379> hmset user:2 id 2 name qqx sex 0
OK
127.0.0.1:6379> hgetall user:1
1) "id"
2) "1"
3) "name"
4) "zyw"
5) "sex"
6) "1"
127.0.0.1:6379> hget user:1 id
"1"
127.0.0.1:6379> hvals user:1
1) "1"
2) "zyw"
3) "1"
127.0.0.1:6379> hkeys user:1
1) "id"
2) "name"
3) "sex"
127.0.0.1:6379> hexists user:1 id
(integer) 1
127.0.0.1:6379> hmget user:1 id name  sex
1) "1"
2) "zyw"
3) "1"
127.0.0.1:6379> hstrlen user:1 id
(integer) 1
127.0.0.1:6379> hstrlen user:1 name
(integer) 3
127.0.0.1:6379> hsetnx user:1 id 3
(integer) 0

127.0.0.1:6379> hscan user:1 0 match "sex" count 1
1) "0"
2) 1) "sex"
   2) "1"
127.0.0.1:6379> hscan user:1 0 match "sex1" count 1
1) "0"
2) (empty list or set)
127.0.0.1:6379> hdel user:1 id
(integer) 1
127.0.0.1:6379> hget user:1 id
(nil)
127.0.0.1:6379> hget user:1 name
"zyw"
127.0.0.1:6379> hincrby user:1 sex 1
(integer) 2
127.0.0.1:6379> hget user:2 sex
"0"
127.0.0.1:6379> hget user:1 sex
"2"

 4.使用场景

     1.存储对象,相比于string json序列化,hash存储更快,节省了序列化的时间。常用于对象存储,例如购物车、商品等

你可能感兴趣的:(redis,redis,哈希算法,数据库)