标准 专业
多元 极客

Redis实验室(2)——常用命令介绍——散列

散列类型

散列类型也是一种字典结构,存储了字段和字段值的映射,但字段只能是字符串,不支持其他数据类型,也就是说,散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多2^32-1个字段。
Redis散列类型的优势:数据库所有记录拥有同样的属性,无法为某条记录单独赋予属性。如果添加单独属性,其他数据也要添加同样的属性,这对其他不需要这个属性的数据是冗余字段。而Redis并不要求每个键都依据相同的存储结构,我们完全可以为每个键定制专属属性。

 

HGET与HSET

HSET命令用来给字段赋值,HGET命令用来获取字段的值,代码如下:

# HSET命令
127.0.0.1:6379> HSET sunshine name sunshine
(integer) 1
127.0.0.1:6379> HSET sunshine age 22
(integer) 1
127.0.0.1:6379> HSET sunshine skills Java
(integer) 1
# HGET命令
127.0.0.1:6379> HGET sunshine name
"sunshine"
127.0.0.1:6379> HGET sunshine age
"22"
127.0.0.1:6379> HGET sunshine skills
"Java"

HSET命令不区分是插入或者更新操作。当执行插入操作时,HSET命令返回1,当执行的是更新操作时,HSET命令返回0。
当需要同时设置多个字段的值时,可以使用HMSET命令,代码如下:

127.0.0.1:6379> 127.0.0.1:6379> HMSET architect name squirrel age 21 skills "full stack"
ok

相应的HMGET命令可以同时获得多个字段的值,代码如下:

127.0.0.1:6379> HMGET architect name skills
1) "squirrel"
2) "full stack"

这就有一个傻逼的问题了,我不知道键可以用keys *来按图索骥,但是我不知道散列的键呢?代码如下:

127.0.0.1:6379> HGETALL architect
1) "name"
2) "squirrel"
3) "age"
4) "21"
5) "skills"
6) "full stack"

对就是HGETALL命令。
看起来很乱,redis这么粗犷的原因是返回最原始的数据,各种语言的客户端或者类库将会各种花样封装,变成对象,处理起来更加的赏心悦目。

HEXISTS key

HEXISTS命令用来判断一个字段是否存在,如果存在则返回1,否则返回0(如果键不存在也会返回0),代码如下:

127.0.0.1:6379> HEXISTS sunshine name
(integer) 1
127.0.0.1:6379> HEXISTS sunshine ugly
(integer) 0

HSETNX

HSETNX用于当字段不存在时赋值,如果字段已经存在,该命令将不执行任何操作,而且该命令是原子操作

HINCREBY

HINCRBY与INCRBY命令相似,可以使字段值增加指定的指数,代码如下:

127.0.0.1:6379> HINCRBY sunshine performace 100
(integer) 100

performace键不存在,HINCRBY命令会自动建立该键并默认performance的值为0,然后实现自增命令。

HDEL

HDEL命令用于删除一个或多个字段,返回值是被删除字段的个数,代码如下:

127.0.0.1:6379> HDEL sunshine age performace
(integer) 2

HKEYS与HVALS

HKEYS命令用于只获取字段名,HVALS命令用于只获取字段值,代码如下:

#HKEYS命令
127.0.0.1:6379> HKEYS sunshine
1) "name"
2) "skills"
#HVALS命令
127.0.0.1:6379> HVALS sunshine
1) "sunshine"
2) "Java"

HLEN

HLEN命令用来获取字段数量。

#HLEN命令
127.0.0.1:6379> HLEN sunshine
(integer) 2
赞(1) 投币

评论 抢沙发

慕勋的实验室慕勋的研究院

码字不容易,路过请投币

支付宝扫一扫

微信扫一扫