數(shù)據(jù)與數(shù)據(jù)之間沒有關(guān)聯(lián)關(guān)系6峁!周崭!
1柳譬、數(shù)據(jù)模型簡單
2、需要靈活性更強(qiáng)的IT系統(tǒng)
3续镇、對數(shù)據(jù)庫性能要求高
4美澳、不需要高度的數(shù)據(jù)一致性
5、對于給定key摸航,比較容易映射復(fù)雜值的環(huán)境
CAP:
? ? C:Consistency? ? 強(qiáng)一致性
? ? A:Availability? ? 可用性
? ? P:Partition tolerance? ? 分區(qū)容錯性
(Zookeeper保證CP)人柿、(Eureka保證AP)
NoSQL數(shù)據(jù)庫分類:
1、鍵值(Key-Value)存儲數(shù)據(jù)庫:Redis等
2忙厌、列存儲數(shù)據(jù)庫:HBase等
3凫岖、文檔型數(shù)據(jù)庫:MongoDb等
4、圖形(Graph)數(shù)據(jù)庫:Neo4J等
Redis命令:
del key:刪除鍵? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? set key value:設(shè)置一個鍵值對
keys *:打印所有的鍵? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? exists key:檢查key是否存在
expire key seconds:給key設(shè)置過期時間? ? ? ? ? ?ttl key:查看key的剩余生存時間
pttl key:以毫秒為單位返回剩余生存時間? ? ? ? ? ??
persist key:移除key的過期時間逢净,永久保存
randomkey:從當(dāng)前數(shù)據(jù)庫返回隨機(jī)一個key
rename keyOldName keyNewName:給key重新起個名字
move key database:把key移到database數(shù)據(jù)庫中(相當(dāng)于剪切)哥放,key的位置支持表達(dá)式
typekey:返回key的類型
????key的命名:
不要太長,也不要太短 爹土,可以使用? “ : ” 來進(jìn)行命名甥雕,如:user:name、user:password
key的名稱區(qū)分大小寫U鸵稹I缏丁!
Redis數(shù)據(jù)類型:
String(字符串)
String(字符串)
? ? 二進(jìn)制安全琼娘,可把文件作為字符串來存儲峭弟、計數(shù)器
? ? 取值:get key
? ? setnx key value:只有key不存在的時候才會把value賦值給key(可解決分布式鎖)
? ? getrange key start end:獲取key的value值,結(jié)果是從start到end結(jié)束
? ? getset key_name value:用于設(shè)置指定的值脱拼,并返回key的舊址瞒瘸,如果key不存在,返回null熄浓;
? ? strlen key:返回key值得長度
? ? incr key_name:將key中的值自增1情臭,當(dāng)沒有這個key時,會先創(chuàng)建key赌蔑,并初始化值為1
? ? decr key_name:將key中的值減1
? ? incrby key_name num:設(shè)置key自增數(shù)num
? ? decrby key_name num:設(shè)置key自減數(shù)num
List(列表)
Set(集合)
Sorted Set(有序集合)
hash(散列)
非常適合存儲JavaBean對象
命令:
? ? hset key field value:存入設(shè)置值
? ? hget key field:取值
? ? hmset key field value field value...:一次給一個對象的多個屬性賦值
? ? hmget key field field ...:一次獲取多個屬性的值
? ? hgetall key:獲取key得所有屬性和值
? ? hkeys key:獲取key得所有屬性
? ? hlen key:獲取key中得屬性個數(shù)
? ? hdel key field...:刪除key中的屬性field
? ? hincrby key field count:給key中屬性的值自增count
? ? hexists key field:判斷key中field屬性是否存在
? ??