Redis:存储Hash(基本概念、命令)


1、Hash类型

(1)概念

将一个对象类型存储在Hash类型要比存储在Stringt类型占用更少的内存空间(相比于JSON,json是以字符串的形式存储的),可以实现对整个对象的存取。因此,hash更适合存储对象

对象以字符串的形式存储会增加序列化与反序列化的开销,对对象的值进行修改的时候需要对并发进行控制,会降低程序的效率,而redis没有这些缺陷。但是,当redis的多个属性以键值对的形式存储的时候,hash的名字是重复存储的,会造成内存的浪费

student:1 name zhai
student:1 age 12

而以字符串的形式存储就不存在重复存储的现象,一个对象只存储一个名称即可

student{
"name":"zhai",
"age":"12"
}

(2)结构

(3)应用

 

 

 2、命令

(1)单个存取

方式一:此种方式不利于管理

127.0.0.1:6379> hset myhash zhai 1997
(integer) 1
127.0.0.1:6379> hset myhash zhang 123
(integer) 1

 

 所有的数据都存储在一起,不方便查看

方式二:

127.0.0.1:6379> hset student:1 name zhai
(integer) 1
127.0.0.1:6379> hset student:2 name zhang
(integer) 1

 

 此种方式结构更清晰,利于对数据的管理

127.0.0.1:6379> hget student:1 name
"zhai"
127.0.0.1:6379> hget student:2 name
"zhang"

(2)存取多个数据

方式一:

一次存储多个,单个取出

 一次取出多个·:

方式二:

127.0.0.1:6379> hmset student:3 name tom age 12
OK
127.0.0.1:6379> hget student:3 name
"tom"
127.0.0.1:6379> hmget student:3 name age
1) "tom"
2) "12"

 

 (3)取出所有的数据

127.0.0.1:6379> hgetall student:3
1) "name"
2) "tom"
3) "age"
4) "12"

 

(4)删除

删除单个键值对

127.0.0.1:6379> hgetall student:3
1) "name"
2) "tom"
3) "age"
4) "12"
127.0.0.1:6379> hdel student:3 age
(integer) 1
127.0.0.1:6379> hgetall student:3
1) "name"
2) "tom"

删除所有键值对

127.0.0.1:6379> keys *
1) "student:3"
2) "student:1"
3) "student:2"
4) "myhash"
127.0.0.1:6379> del myhash
(integer) 1
127.0.0.1:6379> keys *
1) "student:3"
2) "student:1"
3) "student:2"

(5)字段的数量

127.0.0.1:6379> hmset student:4 name lll age 12
OK
127.0.0.1:6379> hlen student:4
(integer) 2

 (6)增加字段

127.0.0.1:6379> hmset student:4 name lll age 12
OK
127.0.0.1:6379> hlen student:4
(integer) 2
127.0.0.1:6379> hset student:4 score 123
(integer) 1
127.0.0.1:6379> hgetall student:4
1) "name"
2) "lll"
3) "age"
4) "12"
5) "score"
6) "123"

(7)减小数值

 (8)判定指定的键是否存在:返回1代表有,0没有。

 (9)获取所有的键:

 (10)获取所有的键对应的值:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM