Redis常用命令--Hashes
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。