柚子快報(bào)激活碼778899分享:redis非關(guān)系型數(shù)據(jù)庫(kù)
1.什么叫NOSQL
nosql:不僅僅是sql,是非關(guān)系型數(shù)據(jù)庫(kù)的概述
?2.NOSQL和RDBMS的區(qū)別
RDBMS: ????????高度組織化結(jié)構(gòu)化數(shù)據(jù)。 ????????????????user---userid username age sex ..... ????????結(jié)構(gòu)化查詢語(yǔ)言(SQL) ????????數(shù)據(jù)和關(guān)系都存儲(chǔ)在單獨(dú)的表中。 ????????數(shù)據(jù)定義語(yǔ)言DDL,數(shù)據(jù)操縱語(yǔ)言DML, ????????嚴(yán)格的一致性.事務(wù) ????????基于事務(wù)----mysql事務(wù): ACID 事務(wù)并發(fā)帶來(lái)的問(wèn)題: 事務(wù)的隔離級(jí)別
NoSOL: ????????代表著不僅僅是SQL ????????沒(méi)有聲明性查詢語(yǔ)言 ????????鍵-值對(duì)存儲(chǔ)。 ????????非結(jié)構(gòu)化和不可預(yù)知的數(shù)據(jù) 字符串 對(duì)象 隊(duì)列 集合 ????????高性能,高可用性和可伸縮性。適合搭建集群。mysql搭建主從模式
1. 數(shù)據(jù)模型:
NoSQL:NoSQL數(shù)據(jù)庫(kù)采用非關(guān)系型數(shù)據(jù)模型,例如鍵值存儲(chǔ)、文檔數(shù)據(jù)庫(kù)、列族數(shù)據(jù)庫(kù)、圖數(shù)據(jù)庫(kù)等。這些數(shù)據(jù)庫(kù)不需要遵循固定的表格結(jié)構(gòu),可以根據(jù)需要?jiǎng)討B(tài)定義數(shù)據(jù)模式。 RDBMS:RDBMS采用關(guān)系型數(shù)據(jù)模型,數(shù)據(jù)以表格形式組織
2. 數(shù)據(jù)關(guān)系:
NoSQL:NoSQL數(shù)據(jù)庫(kù)通常不支持表之間的復(fù)雜關(guān)系,數(shù)據(jù)之間的關(guān)聯(lián)由應(yīng)用程序處理。 RDBMS:RDBMS支持復(fù)雜的數(shù)據(jù)關(guān)系,通過(guò)外鍵等機(jī)制實(shí)現(xiàn)表之間的關(guān)聯(lián)。
3. 可擴(kuò)展性:
NoSQL:NoSQL數(shù)據(jù)庫(kù)通常具有良好的可擴(kuò)展性,可以輕松地?cái)U(kuò)展到大規(guī)模的分布式系統(tǒng),適用于處理海量數(shù)據(jù)和高并發(fā)請(qǐng)求。 RDBMS:傳統(tǒng)的RDBMS在處理大規(guī)模數(shù)據(jù)和高并發(fā)時(shí)可能面臨挑戰(zhàn),雖然一些RDBMS已經(jīng)增加了分布式擴(kuò)展功能,但通常不如NoSQL數(shù)據(jù)庫(kù)靈活。
4. 數(shù)據(jù)一致性:
NoSQL:一些NoSQL數(shù)據(jù)庫(kù)支持最終一致性,即數(shù)據(jù)在一段時(shí)間內(nèi)可能會(huì)出現(xiàn)不一致的狀態(tài),但最終會(huì)達(dá)到一致。 RDBMS:RDBMS通常支持強(qiáng)一致性,即保證數(shù)據(jù)的一致性和完整性。
5. 查詢語(yǔ)言:
NoSQL:NoSQL數(shù)據(jù)庫(kù)的查詢語(yǔ)言通常比較簡(jiǎn)單,可能不支持復(fù)雜的查詢操作。 RDBMS:RDBMS使用SQL進(jìn)行查詢和操作,可以執(zhí)行復(fù)雜的數(shù)據(jù)查詢和處理。
3.常見(jiàn)的NOSQL產(chǎn)品
1.Redis
2.MongoDb? ? ? ? 前端
3.Hbase? ? ? ? ? ? ? 數(shù)據(jù)庫(kù)
4.什么是Redis
Redis(Remote Dictionary Server ),即遠(yuǎn)程字典服務(wù),是一個(gè)開(kāi)源的使用ANSI?C語(yǔ)言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API。
?內(nèi)存存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)服務(wù)器,可用作數(shù)據(jù)庫(kù)、緩存、引流擎和消息隊(duì)列代理的開(kāi)源內(nèi)存數(shù)據(jù)存儲(chǔ)
注意:redis的計(jì)算都是基于內(nèi)存,redis的存儲(chǔ)可以存在磁盤上
特點(diǎn):
1.redis的計(jì)算都是基于內(nèi)存,Redis讀取的速度快,
是110000次/s,寫的速度是81000次/s 2.原子。Redis的所有操作都是原子性的,同時(shí)Redis還支持對(duì)幾個(gè)操作全并后的原子性執(zhí)行。 3.支持多種數(shù)據(jù)結(jié)構(gòu):字符串、哈希結(jié)構(gòu)、列表、集合、可排序集合和基數(shù) 4.持久化--磁盤,redis的存儲(chǔ)可以存在磁盤上 5.主從復(fù)制(集群)
Redis 可以在如緩存、消息傳遞隊(duì)列中使用
5.安裝
安裝c語(yǔ)言環(huán)境
下載解壓
進(jìn)入安裝目錄? make? | make install??
啟動(dòng)
拷貝cp redis.conf redis.conf.blank,防止改錯(cuò)
啟動(dòng)redis-server redis.conf
redis-server +完整路徑
連接客戶端
redis-cli? ?默認(rèn)連接本地的redis服務(wù)
redis-cli -h 192.168.64.129 -p 6379
-h :連接redis服務(wù)器的ip
-p? ?:連接redis服務(wù)器的端口號(hào)
6.目錄
?redis.conf? ? ? ? redis配置文件
sentinel.conf? ? ? ? ?redis集群哨兵的配置文件
(1)設(shè)置redis啟動(dòng)時(shí)后臺(tái)啟動(dòng)
是否啟動(dòng)
查看進(jìn)程? ? ? ? 客戶端連接
(2)設(shè)置遠(yuǎn)程連接
保護(hù)策略設(shè)置為no
7.操作
默認(rèn)redis有16個(gè)庫(kù)
select n:選擇庫(kù)
flushdb:清空當(dāng)前所在庫(kù)
flushall:清空所有的庫(kù)
keys * 查看所有key
del? key....刪除
exists key 判斷key是否存在
expire key seconds秒值? ?設(shè)置key過(guò)期時(shí)間
ttl key查看key的剩余時(shí)間
redis支持多種數(shù)據(jù)結(jié)構(gòu):
常用:字符串、哈希、列表、集合、可排序集合
7.1對(duì)字符串的支持
它的value類型為字符串類型,單個(gè)value大小最大512M
set key value:存儲(chǔ)字符串類型的value值,每次只能存儲(chǔ)一個(gè)
get key :獲取指定key的value
setex key seconds value :存儲(chǔ)key-value時(shí)為其指定過(guò)期時(shí)間?seconds (以秒為單位)
setnx key value:存儲(chǔ)的key如果存在,則不存入,如果不存在則存入
mset key value key value...存儲(chǔ)多個(gè)
mget key1 key2 ...查詢多個(gè)
修改:
? ? ? ? 設(shè)置key的過(guò)期時(shí)間expire key seconds
incr key :對(duì)指定的key進(jìn)行累加? ?要求value是數(shù)字字符串? ? ?點(diǎn)贊
incrby key num:指定累加的值
decr key :對(duì)指定的key進(jìn)行累減? ? ? 取消點(diǎn)贊
7.2hash散列表類型的命令
value是hashMap類型,適合存放對(duì)象類型
hset key filed value 將哈希表 key 中的字段 field 的值設(shè)為 value 。
hget key filed:獲取指定key對(duì)應(yīng)的filed
hexists key filed:判斷指定的filed是否存在
hkeys key:獲取指定key的所有field
hvals key:獲取指定key的所有value
hgetall key :獲取指定key對(duì)應(yīng)的所有hash
刪除:hdel key filed? 刪除key里面的filed
7.3list列表類型的命令
value是一個(gè)列表值,元素可重復(fù),有序
lpush k1 v1 v2 v3...將一個(gè)或多個(gè)值插入到列表頭部? ? ? ?
lindex key index? :根據(jù)下標(biāo)獲取
lrange key start end?獲取指定key對(duì)應(yīng)返回的列表元素范
lset key index?value通過(guò)索引設(shè)置列表元素的值
lrem? key? count value :刪除指定元素的個(gè)數(shù)
count > 0 : 從表頭開(kāi)始向表尾搜索,移除與 VALUE 相等的元素,數(shù)量為 COUNT 。count < 0 : 從表尾開(kāi)始向表頭搜索,移除與 VALUE 相等的元素,數(shù)量為 COUNT 的絕對(duì)值。count = 0 : 移除表中所有與 VALUE 相等的值。
lpop key :獲取并移除最左邊的元素
lpop key? count
7.4set集合類型的命令
value是set集合類型,添加的元素不能重復(fù)
sadd key value value ....添加合集元素? ? ? ?
smembers key? ?查看
sunion k1 k2 :求k1和k2的并集
sinter k1 k2 :交集
sdiff k1 k2 :求k1和k2的差集
srem key value...:移除
spop key:隨機(jī)移除
7.5sorted set集合類型的命令
它的value也是一個(gè)集合,但是該集合需要額外增加一個(gè)分?jǐn)?shù)值,用于排序,不允許重復(fù)
zadd key score value score value ...添加
zrange key start end? ? ? ? ? ? ? ? ? ? ? ? 最新熱門
zrange key start end??withscores帶數(shù)字
zrevrange?key start end 倒序
zrem key value:移除
8.應(yīng)用場(chǎng)景
1.作為熱點(diǎn)數(shù)據(jù)的存儲(chǔ)|緩存
2.可以實(shí)現(xiàn)session共享
3.點(diǎn)贊,收藏,評(píng)論數(shù)等
4.分布式鎖
5.排行榜
6.秒殺
9.redis的持久化方式
持久化:把內(nèi)存中的數(shù)據(jù),保存到磁盤的過(guò)程
作用:防止數(shù)據(jù)的丟失
1.RDB快照模式
? ? ? ? 優(yōu):持久化速度快,數(shù)據(jù)恢復(fù)快
? ? ? ? 缺:數(shù)據(jù)完整性差,會(huì)丟失一段時(shí)間的數(shù)據(jù)
2.AOF
????????
9.1.RDB持久化方式
RDB 持久性以指定的時(shí)間間隔執(zhí)行數(shù)據(jù)集的時(shí)間點(diǎn)快照。redis默認(rèn)的持久化方式
指在指定間隔內(nèi),把內(nèi)存中的數(shù)據(jù)復(fù)制到磁盤
? RDB持久化存儲(chǔ)在磁盤上的名稱默認(rèn)為dump.rdb
什么時(shí)候觸發(fā)RDB持久化方式
1.手動(dòng)觸發(fā)? ? ? ? save命令觸發(fā)
2.手動(dòng)觸發(fā)? ?bgsave
4.自動(dòng)觸發(fā)? 根據(jù)配置 底層bgsave
區(qū)別
save命令會(huì)阻塞當(dāng)前redis服務(wù)器,執(zhí)行save命令期間,redis不能執(zhí)行其他命令,直到RDB過(guò)程完成
bgsave執(zhí)行該命令時(shí),redis會(huì)在后臺(tái)異步進(jìn)行快照操作,快照同時(shí)還可以響應(yīng)客戶端請(qǐng)求
?
save在指定的秒數(shù)內(nèi)發(fā)送changes次變化則會(huì)觸發(fā)rdb模式
save 5 3? ? ? ? 5秒內(nèi)發(fā)送三次改變則會(huì)觸發(fā)rdb模式
?save默認(rèn)的,3600s1次改變|300秒100次改變|60s10000次改變
?默認(rèn)保存文件
?
?
9.1.2rdb數(shù)據(jù)恢復(fù)
把備份的dump.rdb文件復(fù)制到redis啟動(dòng)目錄下
1.dump.rdb備份到其他目錄下,關(guān)閉redis并刪除dump.rdb,啟動(dòng)redis查看是否有內(nèi)容,無(wú)內(nèi)容
2.關(guān)閉redis服務(wù),把備份的dump.rdb文件復(fù)制到redis啟動(dòng)目錄下,再啟動(dòng),有內(nèi)容
9.1.3RDB的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):1.數(shù)據(jù)恢復(fù)速度快
2.備份速度快
缺:數(shù)據(jù)完整性差【可能會(huì)丟失最后一段時(shí)間的數(shù)據(jù)】
9.2. AOF持久化方式
append only? file:追加寫操作到日志文件
RDB全量備份總是耗時(shí)的,提供一種更加高效的方式AOF,工作機(jī)制很簡(jiǎn)單,rdis會(huì)將每一個(gè)收到的? 寫命令都通過(guò)write函數(shù)追加到文件中。通俗的理解就是日志記錄。
默認(rèn)不開(kāi)啟,開(kāi)啟改為yes
默認(rèn)名appendonly.aof
觸發(fā)機(jī)制
appendfsync always? ? ? ? 總觸發(fā),每執(zhí)行一個(gè)寫操作就會(huì)觸發(fā)AOF appendfsync everysec? ? ? ? 每一秒觸發(fā)一次? ? ? ? 丟失最近1秒的數(shù)據(jù) ?appendfsync no? ? ? ? 不觸發(fā)
優(yōu)點(diǎn):數(shù)據(jù)完整性比較好,最多丟失最后1秒的數(shù)據(jù)|丟失最后一個(gè)寫命令
缺點(diǎn):數(shù)據(jù)恢復(fù)慢,而且日志文件非常大
rdb和aof是不兼容的
默認(rèn)redis啟動(dòng)時(shí),先加載aof,一般企業(yè)中使用rdb模式
柚子快報(bào)激活碼778899分享:redis非關(guān)系型數(shù)據(jù)庫(kù)
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。