Redis学习笔记--Hash(五)

Redis的数据是通过key-value的方式存储的,对于value的数据类型有字符串、Hash、list、set、sortedSet
在redis命令语句中,语句是忽略大小写的,但是key是不可以忽略大小写的。

使用string遇到的问题。

  假设:我们使用一个类对象以json的形式存储在Redis中,类中有很多属性,我们有时候只是想修改其中一个数据的时候,操作就要回将数据从string中取出来,然后修改,这样会影响响应的速度。可以使用Hash来解决这个问题。

Hash的简单的介绍

  hash叫做散列类型,它提供了字段和值的映射,字段只能是字符串类型,不支持散转类型和集合类型等其它数据类型。
1.Hash类型
1.1命令
1.1.1赋值

HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。

语法:HSET key field value (一次插入一个值)

127.0.0.1:6379> hset user username zhangsan 
(integer) 1

一次设置多个字段

语法:HMSET key field value [field value]

127.0.0.1:6379> hmset user age 20 username lisi 
OK

1.1.2取值

一次取一个值

语法:HGET key field

127.0.0.1:6379> hget user username
"zhangsan“

一次获取多个值

语法:HMGET key field [field ……]

127.0.0.1:6379> hmget user age username
1) "20"
2) "lisi"

获取所以的字段

HGETALL key

127.0.0.1:6379> hgetall user
1) "age"
2) "20"
3) "username"
4) "lisi"

1.1.3删除字段

可以一次删除一个或者多个字段,返回值是被删除的字段个数

语法:HDEL key field [field……]

127.0.0.1:6379> hdel user age
(integer) 1
127.0.0.1:6379> hdel user age name
(integer) 0
127.0.0.1:6379> hdel user age username
(integer) 1 

1.1.4增加数字

语法:HINCRBY  key field increnum

127.0.0.1:6379> hincrby user age 2    将用户的年龄加2
(integer) 22
127.0.0.1:6379> hget user age        获取用户的年龄
"22“

1.1.5判断字段是否存在

语法:HEXISTS key field

127.0.0.1:6379> hexists user age        查看user中是否有age字段
(integer) 1
127.0.0.1:6379> hexists user name    查看user中是否有name字段
(integer) 0

1.1.6只获取字段或者字段值

语法:HKEYS key

   HVALS key

127.0.0.1:6379> hmset user age 20 name lisi 
OK
127.0.0.1:6379> hkeys user
1) "age"
2) "name"
127.0.0.1:6379> hvals user
1) "20"
2) "lisi"

1.1.7获取字段数量

语法:HLEN key

127.0.0.1:6379> hlen user
(integer) 2

2.1应用

存储商品信息 ,比如商品的id,商品名称,商品……

2.1.1存储商品信息

192.168.101.3:7003> HMSET items:1001 id 3 name apple price 999.9
OK

2.1.2商品信息获取

192.168.101.3:7003> HGET items:1001 id
"3"
192.168.101.3:7003> HGETALL items:1001
1) "id"
2) "3"
3) "name"
4) "apple"
5) "price"
6) "999.9"

 

posted @ 2017-12-30 19:28  kwdeep  阅读(212)  评论(0编辑  收藏  举报