一城菊、NOSQL:
(非關(guān)系型的數(shù)據(jù)庫(kù))
1.High performance - 對(duì)數(shù)據(jù)庫(kù)高并發(fā)讀寫(xiě)的需求
2.Huge Storage - 對(duì)海量數(shù)據(jù)的高效率存儲(chǔ)和訪問(wèn)的需求
3.High Scalability && High Availability- 對(duì)數(shù)據(jù)庫(kù)的高可擴(kuò)展性和高可用性的需求
二柒爵、主流的NOSQL:
鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)
相關(guān)產(chǎn)品: Tokyo Cabinet/Tyrant、Redis棉胀、Voldemort冀膝、Berkeley DB
典型應(yīng)用: 內(nèi)容緩存,主要用于處理大量數(shù)據(jù)的高訪問(wèn)負(fù)載窝剖。
數(shù)據(jù)模型: 一系列鍵值對(duì)
優(yōu)勢(shì): 快速查詢
劣勢(shì): 存儲(chǔ)的數(shù)據(jù)缺少結(jié)構(gòu)化
列存儲(chǔ)數(shù)據(jù)庫(kù)
相關(guān)產(chǎn)品:Cassandra, HBase, Riak
典型應(yīng)用:分布式的文件系統(tǒng)
數(shù)據(jù)模型:以列簇式存儲(chǔ),將同一列數(shù)據(jù)存在一起
優(yōu)勢(shì):查找速度快赐纱,可擴(kuò)展性強(qiáng),更容易進(jìn)行分布式擴(kuò)展
劣勢(shì):功能相對(duì)局限
文檔型數(shù)據(jù)庫(kù)
相關(guān)產(chǎn)品:CouchDB诚隙、MongoDB
典型應(yīng)用:Web應(yīng)用(與Key-Value類似,Value是結(jié)構(gòu)化的)
數(shù)據(jù)模型: 一系列鍵值對(duì)
優(yōu)勢(shì):數(shù)據(jù)結(jié)構(gòu)要求不嚴(yán)格
劣勢(shì): 查詢性能不高久又,而且缺乏統(tǒng)一的查詢語(yǔ)法
圖形(Graph)數(shù)據(jù)庫(kù)
相關(guān)數(shù)據(jù)庫(kù):Neo4J效五、InfoGrid地消、Infinite Graph
典型應(yīng)用:社交網(wǎng)絡(luò)
數(shù)據(jù)模型:圖結(jié)構(gòu)
優(yōu)勢(shì):利用圖結(jié)構(gòu)相關(guān)算法畏妖。
劣勢(shì):需要對(duì)整個(gè)圖做計(jì)算才能得出結(jié)果,不容易做分布式的集群方案戒劫。
三半夷、Redis鍵值數(shù)據(jù)類型:
字符串類型 stringMap<String,String>
散列類型 hash 值又是一個(gè)map集合Map<String,map<String,String>>
列表類型 listMap<String,list<String>>
集合類型 setMap<String,set<String>>
有序集合類型 sortedsetMap<String,sortedset>
key不要太長(zhǎng),最好不要操作1024個(gè)字節(jié)谱仪,這不僅會(huì)消耗內(nèi)存還會(huì)降低查找效率
key不要太短玻熙,如果太短會(huì)降低key的可讀性
在項(xiàng)目中,key最好有一個(gè)統(tǒng)一的命名規(guī)范
四嗦随、Redis命令:
(1)String:
set name "itcast"
get name
del name
(2)hash:
hset myhash username haohao
hget myhash username
hdel myhash username
(3)list:
lpush mylist a b c
lpop mylist? ? ? ? ? 返回并彈出第一個(gè)元素
rpop mylist? ? ? ? ? 從尾部彈出元素
(4)set:
sadd myset a b c? (該key的值已有則不會(huì)重復(fù)添加)
smembers myset (獲取set中所有的成員)
srem myset a b (刪除set中指定的成員)
(5)通用命令:
keys * 獲取所有與pattern匹配的key
del company 刪除指定的key
exists compnay? 判斷該key是否存在,1代表存在枚尼,0代表不存在
type company 獲取指定key的類型。該命令將以字符串的格式 ? 返回署恍。返回的字符串為string、list袁串、set、hash囱修,如果key不存在返回none
expire 設(shè)置過(guò)期時(shí)間:expire key 秒值
五王悍、異常:
java.util.MissingResourceException: Can't find bundle for base name redis
(.properties)文件要放在根目錄下破镰,即src下