2023-01-24 一、NoSQL資料庫 1、NoSQL資料庫的簡介 NoSQL(NoSQL=Not Only SQL),即“不僅僅是SQL”,泛指非關係型的資料庫。NosQL不依賴業務邏輯方式存儲,而以簡單的key-value模式存儲。因此大大的增加了資料庫的擴展能力。 (1)不遵循SQL標準 ...
2023-01-24
一、NoSQL資料庫
1、NoSQL資料庫的簡介
NoSQL(NoSQL=Not Only SQL),即“不僅僅是SQL”,泛指非關係型的資料庫。NosQL不依賴業務邏輯方式存儲,而以簡單的key-value模式存儲。因此大大的增加了資料庫的擴展能力。
(1)不遵循SQL標準
(2)不支持ACID。(原子、一致、隔離、持久)
(3)遠超於SQL的性能
2、NoSQL適用場景
(1)對數據高併發的讀寫
(2)海量數據的讀寫
(3)對數據高可擴展的
3、NoSQL不適用場景
(1)需要事務支持
(2)基於sql的結構化查詢存儲,處理複雜的關係。
4、非關係型資料庫
(1)Memcache
①不支持持久化
②支持類型單一
③一般是作為緩存資料庫輔助持久化的資料庫
(2)Redis
①支持持久化
②支持多種數據結構的存儲,比如list、set、hash、zset
③一般是作為緩存資料庫輔助持久化的資料庫
(3)MongDB
①高性能、開源、模式自由的文檔型資料庫
②數據都在記憶體中,如果記憶體不足,吧不常用的數據保存到硬碟
③雖然是key-value模式,但是對value(尤其是json)提供了豐富的查詢功能
④支持二進位數據及大型對象
⑤可以根據數據的特點替代RDBMS,成為獨立的資料庫。或者配合RDBMS,存儲特定的數據。
2023-01-25
一、Redis概述
1、Redis概述
(1)Redis是一個開源的key-value存儲系統。
(2)Redis(Remote Dictionary Service):遠程字典服務,Redis是一個開源的使用ANSIC語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、key-value資料庫(NoSQL),並提供多種語言的API。實際開發中,主要時用來做緩存,加快查詢效率。
(3)支持存儲的value類型相對更多,包括string(字元串)、list(列表)、set(集合)、zset(有序集合)和hash(哈希類型)
(4)這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。
(5)在此基礎上,Redis支持各種不同方式的排序。
(6)為了保證效率,數據都是緩存在記憶體中。
(7)redis會周期性的把更新的數據寫入磁碟或者把修改操作寫入追加的記錄文件。
(8)並且在此基礎上實現了master-slave(主從)同步。
2、Redis的下載路徑
http://redis.cn/
二、redis中常用的數據類型
1、Redis鍵(key)
(1)查看當前庫所有key
keys *
(2)判斷某個key是否存在
exists key
(3)查看存儲的key是什麼類型
type key
(4)刪除指定的key數據
del key
(5)根據value選擇非阻塞刪除
僅將keys從keyspace元數據中刪除,真正的刪除會在後續非同步操作
unlink key
(6)為給定的key設置過期時間(單位是秒)
expire key 10
(7)查看還有多少秒過期,-1表示永不過期,-2表示已過期
ttl key
(8)命令切換資料庫
select 數字(一共有16個庫,從0-15)
(9)查看當前資料庫的key的數量
dbsize
(10)清空當前庫
flushdb
(11)通殺全部庫
flushall
2、Redis字元串(String)
String類型是二進位安全的。即redis中的string可以包含任何數據。
string類型是redis最基本的數據類型,一個redis中字元串value最多可以是512M。
(1)將字元串值value關聯到key
set key值 value值
(2)查詢對應鍵值
get key值
(3)將給定的value值追加到原值的末尾
append key值 value值
(4)獲得值的長度
strlen key值
(5)只有在key不存在時,設置key的值
setnx key值 value值
(6)將key中儲存的數字值增1。只能對數字值操作,如果為空,新增值為1。
incr key值
(7)將key中儲存的數字值減1。只能對數字值操作,如果為空,新增值為-1。
decr key值
(8)將key中儲存的數字值增減。自定義步長。
incrby /decrby
(9)同時設置一個或多個key-value對
mset key1 value1 key2 value2 ...
(9)同時獲取一個或多個value
mget key1 key2 ...
(10)同時設置一個或多個key-value對,當且僅當所有給定key都不存在
msetnx key1 value1 key2 value2 ...
(11)獲得值的範圍,類似於java中的substring ,前包,後包
getrange key 起始位置 結束位置