Redis常用命令--Hashes

时间:2022-07-16 13:00:41

Hash是由键值对组成的map。Hashes的底层是通过字典实现的。一个哈希表里面可以有多个哈希表节点。而每个哈希节点就保存了字典中的一个键值对。

字典是一种用于保存键和值对的抽象数据结构。字典里的每一个键都是唯一的。

在哈希表里面存在一个哈希表数组。其中每个元素指向一个字典的键值对。

在哈希表里面还记录了一个哈希表的大小。已经使用的节点数。还有一个sizemask,它总是比哈希表的大小小1,

用于决定一个键应该放在数组的哪个索引上。

在每个哈希表节点中,都保存了下一个节点,形成链表。

在Redis中大概有15个操作Hash的命令。

HSET key field value:设置hash里面key中的field字段的值设为value,时间复杂度为O(1)。

HGET key field:获取hash中域key的field的值,,时间复杂度为O(1)。

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

HMSET key field value [field value ...]:设置hash表中域key的多个字段值

HMGET key field [field ...]:获取hash里面域key的多个指定字段的值

HKEYS key:获取hash表中域key的所有字段

HVALS key:获得hash表中key域的所有值

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

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

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

HSETNX key field value:设置hash的一个字段,只有当这个字段不存在时有效

HSTRLEN key field:获取hash里面指定field的长度

127.0.0.1:6379> HSET user name zhangsan
(integer) 1
127.0.0.1:6379> HGET user name
"zhangsan"
127.0.0.1:6379> HMSET user age 20 address shanghai birthday 12/18
OK
127.0.0.1:6379> HMGET user name age
1) "zhangsan"
2) "20"
127.0.0.1:6379> HDEL user age
(integer) 1
127.0.0.1:6379> HKEYS user
1) "name"
2) "address"
3) "birthday"
127.0.0.1:6379> HVALS user
1) "zhangsan"
2) "shanghai"
3) "12/18"
127.0.0.1:6379> HGETALL user
1) "name"
2) "zhangsan"
3) "address"
4) "shanghai"
5) "birthday"
6) "12/18"
127.0.0.1:6379> HLEN user
(integer) 3
127.0.0.1:6379> HEXISTS user age
(integer) 0
127.0.0.1:6379> HEXISTS user name
(integer) 1
127.0.0.1:6379> HSETNX user age 18
(integer) 1
127.0.0.1:6379> HSETNX user name lisi
(integer) 0
127.0.0.1:6379> HSTRLEN user name
(integer) 8
127.0.0.1:6379>

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

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

127.0.0.1:6379> HINCRBY user age 5
(integer) 23
127.0.0.1:6379> HINCRBYfloat user age 5.2
"28.2"

HSCAN key cursor [MATCH pattern] [COUNT count]:迭代hash里面的元素

每次都返回一个游标,初始值为0。