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"