Redis-Redis实战(散列类型)

散列,是Redis提供的一种数据类型。散列类型适用于存储类型:对象:属性结构的数据,其中,类型:对象作为key,属性作为字段,值是该字段的值。例如:
这里写图片描述

需要说明的是,redis同其他所有nosql数据库一样,并不强制要求每一个对象上的属性都一样,每个对象都可以根据需求定义任务属性,在散列类型中,每个对象最多支持2^32-1个字段,这会带来很大的灵活性。

散列类型的操作

操作命令
hset key field value   #设置属性-值
hsetnx key field value #设置属性-值,若存在,不执行任何操作
hget key field         #获取属性的值
hmset key filed1 value1 field2 value2 ... #同时设置多个属性-值
hmget key field1 field2 ...  #同时获取多个属性的值
hgetall key            #获取所有的属性和对应的值
hexists key field      #判断属性是否存在
hincrby key field increment #增加
hdel key field         #删除属性
hkeys key              #只获取fields
hvals key              #只获取values
hlen key               #获取字段的数量
示例
127.0.0.1:6379> hset car color red
(integer) 1
127.0.0.1:6379> hsetnx car color blue
(integer) 0
127.0.0.1:6379> hget car color
"red"
127.0.0.1:6379> hmset car price 100 type benchi
OK
127.0.0.1:6379> hmget car color price type
1) "red"
2) "100"
3) "benchi"
127.0.0.1:6379> hgetall car
1) "color"
2) "red"
3) "price"
4) "100"
5) "type"
6) "benchi"
127.0.0.1:6379> hincrby car price 200
(integer) 300
127.0.0.1:6379> hdel car type
(integer) 1
127.0.0.1:6379> hgetall car
1) "color"
2) "red"
3) "price"
4) "300"
127.0.0.1:6379> hkeys car
1) "color"
2) "price"
127.0.0.1:6379> hvals car
1) "red"
2) "300"
127.0.0.1:6379> hlen car
(integer) 2
127.0.0.1:6379> 

实践

1)存储博文数据
Redis实战(字符串类型)中提到了利用redis存储博文数据的例子中,使用一个字符串来存储别序列化后的文章数据,其中包含了文章的多个属性。

这种方式存在一个问题:即要对博文数据进行操作时,无论操作的是标题还是具体内容,都需要获取文章的所有数据并进行反序列化,这样无疑会增加系统的性能消耗。

而本节中描述的散列类型可以对以上示例进行改进,利用字段的概念来存储文章的不同部分
这里写图片描述

这样在结构上也更加清晰,更易于维护。

127.0.0.1:6379> hmset post:1 title myfirstarticle context thisismyfirstarticle author zhangdong time 20161109
OK
127.0.0.1:6379> hgetall post:1
1) "title"
2) "myfirstarticle"
3) "context"
4) "thisismyfirstarticle"
5) "author"
6) "zhangdong"
7) "time"
8) "20161109"
127.0.0.1:6379> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值