Redis支持5种数据类型,String/Hash/List/SortedSet/Set
Hash - 哈希值
Redis的哈希键值对的集合。 Redis的哈希值(value)是字符串字段和字符串值之间的映射,所以它们被用来表示对象
每个哈希可存储多达2³² - 1个 字段-值对(超过40+亿)。
1 | HMSET key field1 value1 [field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中。 127.0.0.1:6379> hmset user01 userId 1 username zhangsan password 123456 desc "one good man" OK
类似于:insert into tb_user (userId,username, password, desc) (1, zhangsan, 123456 “one good man”);
|
2 | HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。 127.0.0.1:6379> hexists user01 desc (integer) 1 查看user01对应的value中是否包含desc这个字段。 |
3 | HGET key field 获取存储在哈希表中指定字段的值。 127.0.0.1:6379> hget user01 username "zhangsan" 类似于:因为user01是redis的key Select username from tb_user where user_id=1; |
4 | HGETALL key 获取在哈希表中指定 key 的所有字段和值 127.0.0.1:6379> hgetall user01 1) "userId" 2) "1" 3) "username" 4) "zhangsan" 5) "password" 6) "123456" 7) "desc" 8) "one good man" 类似于:Select * from tb_user where user_id=1; |
5 | HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。 127.0.0.1:6379> hincrby user01 userId 3 (integer) 4 127.0.0.1:6379> hget user01 userId "4" |
6 | HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。 127.0.0.1:6379> hincrbyfloat user01 userId 2.34 "6.34" 127.0.0.1:6379> hget user01 userId "6.34" |
7 | HKEYS key 获取哈希表中指定key的所有字段名称 127.0.0.1:6379> hkeys user01 1) "userId" 2) "username" 3) "password" 4) "desc" |
8 | HLEN key 获取哈希表中字段的数量 127.0.0.1:6379> hlen user01 (integer) 4 |
9 | HMGET key field1 [field2] 获取所有给定字段的值 127.0.0.1:6379> hmget user01 userId 1) "6.34" 127.0.0.1:6379> hmget user01 userId username 1) "6.34" 2) "zhangsan" 类似于:select userId, username from tb_user where userkey=xxx |
10 | HDEL key field1 [field2] 删除一个或多个哈希表字段 127.0.0.1:6379> hdel user01 username password (integer) 2 127.0.0.1:6379> hkeys user01 1) "userId" 2) "desc" |
11 | HSET key field value 将哈希表 key 中的字段 field 的值设为 value 。 如果哈希表中有这个字段,则设置该字段的值,如果没有,则在哈希表中添加一个字段。 127.0.0.1:6379> hgetall user01 1) "userId" 2) "6.34" 3) "desc" 4) "one good man" 127.0.0.1:6379> hset user01 desc "this is zhangsan" (integer) 0 127.0.0.1:6379> hgetall user01 1) "userId" 2) "6.34" 3) "desc" 4) "this is zhangsan" 类似于: Update tb_user set a = avalue, b=bvalue where userID=xxx
|
12 | HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值。 127.0.0.1:6379> hsetnx user01 userId 13 (integer) 0 127.0.0.1:6379> hgetall user01 1) "userId" 2) "6.34" 3) "desc" 4) "this is zhangsan" 127.0.0.1:6379> hsetnx user01 username zhangsan (integer) 1 127.0.0.1:6379> hgetall user01 1) "userId" 2) "6.34" 3) "desc" 4) "this is zhangsan" 5) "username" 6) "zhangsan" |
13 | HVALS key 获取哈希表中所有值 127.0.0.1:6379> hvals user01 1) "6.34" 2) "this is zhangsan" 3) "zhangsan" Select * from tb_user where user_id = xxx |
14 | HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对。
|
注意:hash没有设置过期时间的命令