hash类型,用于存储对象,当定义hash类型的变量时,要遵循变量的命名规范,对象名:分组来命名,例如,user:1,user:2等,这里不推荐使用user_1这样的命名方式,因为下划线容易和数据库表中表名发生冲突,推荐使用冒号,redis数据存储中帮我们以定义的对象名为根目录存储,分组呢,就是根目录的二级目录,string类型中,就是单纯的操作单个字符串,而hash类型呢存储的是对象,我们对对象添加多个属性等,接下来我们看看hash的常用命令
- hset 对象名 属性名 值(就是往一个对象的属性中设置)
127.0.0.1:6379> hset user:1 id 1
(integer) 1
127.0.0.1:6379> keys *
1) "user:1"
127.0.0.1:6379>
- hmset 对象名 属性名 值...(同时为对象设置多个属性值)
127.0.0.1:6379> hmset user:1 name iosoft2020 age 18
OK
127.0.0.1:6379> keys *
1) "user:1"
- hget 对象名 属性名 (就是得到对象中的单个属性中的值)
127.0.0.1:6379> hget user:1 id
"1"
- hmget 对象名 属性名... (就是得到对象中的多个属性中的值)
127.0.0.1:6379> hmget user:1 name age
1) "iosoft2020"
2) "18"
- hgetall 对象名 (就是得到对象中的所有属性中的值)
127.0.0.1:6379> hgetall user:1
1) "id"
2) "1"
3) "name"
4) "iosoft2020"
5) "age"
6) "18"
这里需要注意的是,它的返回结果是,属性名,值...
- hdel 对象名 属性值(删除对象中的属性值)
127.0.0.1:6379> hdel user:1 age
(integer) 1
127.0.0.1:6379> hgetall user:1
1) "id"
2) "1"
3) "name"
4) "iosoft2020"
127.0.0.1:6379>
这里需要注意的是,它和del key的命令非常相像,del key呢,它是删除这个key的值,而hdel呢,它是删除对象属性的值,这里大家最好区分一下,del key的例子
127.0.0.1:6379> keys *
1) "user:1"
127.0.0.1:6379> del user:1
(integer) 1
127.0.0.1:6379> keys *
(empty array)
- hlen 对象名(它是获取对象中有多少个属性)
127.0.0.1:6379> hset user:2 id 2
(integer) 1
127.0.0.1:6379> hmset user:2 name iosoft2020 age 20
OK
127.0.0.1:6379> hgetall user:2
1) "id"
2) "2"
3) "name"
4) "iosoft2020"
5) "age"
6) "20"
127.0.0.1:6379> hlen user:2
(integer) 3
- hsetnx 对象名 属性 值(这里和string类型中setnx一样,当给对象设置属性时,存在的话,返回0,当属性不存在时,返回1,并添加属性值)
127.0.0.1:6379> hgetall user:2
1) "id"
2) "2"
3) "name"
4) "iosoft2020"
5) "age"
6) "20"127.0.0.1:6379> hsetnx user:2 id 2
(integer) 0
127.0.0.1:6379> hsetnx user:2 sex F
(integer) 1
127.0.0.1:6379>127.0.0.1:6379> hgetall user:2
1) "id"
2) "2"
3) "name"
4) "iosoft2020"
5) "age"
6) "20"
7) "sex"
8) "F"
- hincrby 对象名 属性 加几(对对象属性中加几的处理)
127.0.0.1:6379> hincrby user:2 age 1
(integer) 21127.0.0.1:6379> hgetall user:2
1) "id"
2) "2"
3) "name"
4) "iosoft2020"
5) "age"
6) "21"
7) "sex"
8) "F"
- hincrbyfloat 对象名 属性(float类型) 加几(对对象float属性中加几的处理)
127.0.0.1:6379> hset user:2 www 1.1
(integer) 0
127.0.0.1:6379> hgetall user:2
1) "id"
2) "2"
3) "name"
4) "iosoft2020"
5) "age"
6) "21"
7) "sex"
8) "F"
9) "www"
10) "1.1"
127.0.0.1:6379> hincrbyfloat user:2 www 5
"6.1"
127.0.0.1:6379> hget user:2 www
"6.1"
- hexists 对象名 属性 (是否存在,这里和exists命令的区别是,一个是key是否存在,而hexists是对象中属性是否存在,存在则返回1,不存在返回0)
127.0.0.1:6379> hexists user:2 www
(integer) 0
127.0.0.1:6379> hexists user:2 age
(integer) 1
常用的命令,暂时总结到这里,再有补充的话,我也会随时更新。