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