最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【尚硅谷】Redis 6 入門到精通 超詳細(xì) 教程

2023-03-07 14:37 作者:jaminIsMe  | 我要投稿

數(shù)據(jù)庫(kù)事務(wù)必備特性(ACID)

原子性(Atomicity):指事務(wù)的不可分割性,一個(gè)事務(wù)的所有操作要么不間斷地全部被執(zhí)行,要么全都不執(zhí)行。

一致性(Consistency):事務(wù)前后數(shù)據(jù)的完整性必須保持一致。

隔離性(Isolation):事務(wù)的隔離性是多個(gè)用戶并發(fā)訪問數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)為每一個(gè)用戶開啟的事務(wù),不能被其他事務(wù)的操作數(shù)據(jù)所干擾,多個(gè)并發(fā)事務(wù)之間要相互隔離。

持久性(Durability):持久性是指一個(gè)事務(wù)一旦被提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就是永久性的,接下來即使數(shù)據(jù)庫(kù)發(fā)生故障也不應(yīng)該對(duì)其有任何影響。

注意:

redis支持一致性和隔離性,但無法保證持久性,支持部分的原子性(如果事務(wù)中使用的命令和操作的數(shù)據(jù)類型不匹配的時(shí)候不保證原子性)


redis是單線程加IO多路復(fù)用模式,IO多路復(fù)用大大的提高了CPU的利用率,極大提升了并發(fā)性能。


redis安裝在linux中

首先選擇opt文件解壓redis,編譯后再安裝redis,會(huì)默認(rèn)安裝在usr/local/bin目錄中。有如下默認(rèn)安裝目錄:

啟動(dòng)redis,先執(zhí)行(后臺(tái)啟動(dòng),加了后續(xù)/etc/redis.conf,前臺(tái)啟動(dòng)就不需要加)

redis-server /etc/redis.conf

命令啟動(dòng)redis,再執(zhí)行

redis-cli

命令進(jìn)入客戶端。輸入

ping

命令用來測(cè)試是否聯(lián)通redis

在默認(rèn)安裝的bin目錄中啟動(dòng)redis,推薦使用后臺(tái)啟動(dòng),好處就是即使把終端窗口關(guān)閉還是可以繼續(xù)使用。注意:使用后臺(tái)啟動(dòng)要先將redis.conf文件復(fù)制一份到其他目錄(我復(fù)制在etc目錄下)。

關(guān)閉redis用

shutdown

命令可以,也可以用

kill -9 端口號(hào)

關(guān)閉。


事務(wù):redis事務(wù)是一個(gè)單獨(dú)的隔離操作,無隔離級(jí)別,事務(wù)中的命令都會(huì)序列化、按順序執(zhí)行,其主要作用是串聯(lián)多個(gè)命令防止別的命令插隊(duì)。

  • mutil開啟事務(wù),exec執(zhí)行,執(zhí)行之后表示事務(wù)結(jié)束。也可以不執(zhí)行,discard直接結(jié)束.

queue:排隊(duì)(v)、隊(duì)列(n)

  • 事務(wù)出錯(cuò)

1,組隊(duì)時(shí)出錯(cuò),最終都不會(huì)執(zhí)行

2,組隊(duì)時(shí)成功,執(zhí)行時(shí)誰(shuí)有錯(cuò)誤誰(shuí)就不執(zhí)行,沒錯(cuò)誤的才能執(zhí)行。

Redis持久化:

Redis持久化,由于redis是內(nèi)存數(shù)據(jù)庫(kù),如果不將內(nèi)存中的數(shù)據(jù)保存至硬盤的話,那么服務(wù)器一旦退出,服務(wù)器中的數(shù)據(jù)就會(huì)消失。所以Redis有RDB和AOF兩個(gè)持久化的方式


RDB(Redis DataBase),是redis的默認(rèn)存儲(chǔ)方式,是通過快照(snapshot)完成的。

觸發(fā)快照的方式

1. 符合自定義配置的快照規(guī)則;

2. 執(zhí)行save或者bgsave命令;

3. 執(zhí)行flushall命令;

4. 執(zhí)行主從復(fù)制操作 (第一次)。

執(zhí)行機(jī)制:redis父進(jìn)程首先判斷是否在執(zhí)行保存操作,如果在執(zhí)行則父進(jìn)程只是fork操作創(chuàng)建子進(jìn)程,然后子進(jìn)程創(chuàng)建RDB文件,生成臨時(shí)快照文件,然后對(duì)原有RDB文件進(jìn)行原子性替換(持久化操作),完成后替換原來的快照文件,然后發(fā)送給父進(jìn)程,子進(jìn)程退出。整個(gè)過程主進(jìn)程不進(jìn)行任何io操作,確保了極高的性能

優(yōu)點(diǎn):1,適合大規(guī)模的數(shù)據(jù)恢復(fù),rdb文件是唯一的且是數(shù)據(jù)的快照,不用重新讀取再西俄如內(nèi)存

2,主進(jìn)程fork子進(jìn)程,可以最大化Redis性能

3,體積小,因?yàn)閞db為二進(jìn)制壓縮文件


缺點(diǎn):1,不能保證數(shù)據(jù)完整性

2,需要一定時(shí)間間隔操作,如果redis發(fā)生宕機(jī),則最后一次修改的數(shù)據(jù)就沒有了

3,如果數(shù)據(jù)集較大,父進(jìn)程fork子進(jìn)程時(shí)可能會(huì)造成阻塞


AOF(Append Only File),與快照持久化相比,AOF持久化的實(shí)時(shí)性更好,因此已成為主流的持久化方案。其是把用戶執(zhí)行的每個(gè)“寫”指令(添加/修改/刪除)都備份到文件中,還原數(shù)據(jù)的時(shí)候就是執(zhí)行具體寫指令而已。開啟AOF持久化會(huì)會(huì)清空redis內(nèi)部的數(shù)據(jù),故最好在redis使用之前就開啟它。默認(rèn)情況下Redis沒有開啟AOF方式的持久化,可以通過appendonly參數(shù)開啟。開啟后重啟redis就會(huì)有一個(gè)appendonly.aof文件。


執(zhí)行機(jī)制:開啟AOF后,父進(jìn)程fork一個(gè)子進(jìn)程,然后子進(jìn)程會(huì)將所有執(zhí)行過的命令寫入aof文件中(讀操作不記錄,只記錄寫的記錄,因?yàn)橹挥袑懙牟僮鞑艜?huì)對(duì)數(shù)據(jù)庫(kù)產(chǎn)生影響),如果該文件有錯(cuò)誤,redis就啟動(dòng)不了,可通過redis-check-aof工具(redis-check-aof --fix)去修復(fù)。當(dāng)子進(jìn)程完成AOF重寫后會(huì)像父進(jìn)程發(fā)送完成信號(hào),然后覆蓋舊的AOF文件。


優(yōu)點(diǎn):1,每一次修改都同步,文件的完整性會(huì)更好

2,如果不開啟同步時(shí)間,效率最高。(默認(rèn)每秒同步一次)


缺點(diǎn):1,aof文件遠(yuǎn)遠(yuǎn)大于rdb文件,故修復(fù)速度慢

2,aof運(yùn)行效率比rdb慢,所以redis默認(rèn)的配置是rdb持久化



Redis主從復(fù)制:從機(jī)連主機(jī)

1,在計(jì)算機(jī)中創(chuàng)建一個(gè)myredis文件夾

2,復(fù)制redis.conf文件到myredis

3,分別命名redis6380.conf等等多個(gè)從機(jī)

4,開啟三個(gè)redis的服務(wù)


5,分別在不同的xshell窗口連接redis窗口

6,通過slaveof連接(slaveof +master服務(wù)器ip(我們一臺(tái)服務(wù)器,即是本機(jī)ip:127.0.0.1)+master服務(wù)器端口)

7,可通過info replication命令來查看是否連接從機(jī)和當(dāng)前端口的信息。


薪火相傳:從機(jī)連從機(jī),即是說假如我們現(xiàn)在有20個(gè)從機(jī),那么我們可以讓主機(jī)跟其中三個(gè)直接對(duì)接,再讓這三個(gè)每個(gè)跟另外3個(gè)對(duì)接,以此類推。好處就是減輕了主機(jī)的負(fù)擔(dān),壞處就是前面的服務(wù)器宕機(jī)了后面的就無法跟主機(jī)同步數(shù)據(jù)

反客為主:主從復(fù)制中,即使主機(jī)發(fā)生宕機(jī),從機(jī)也不會(huì)做任何操作,一旦主機(jī)上線,從機(jī)依然跟著主機(jī)。反客為主就是當(dāng)主機(jī)宕機(jī)后,從機(jī)晉升為主機(jī)。通過在從機(jī)中執(zhí)行命令slave no one即可。

哨兵模式:反客為主的自動(dòng)版,能夠后臺(tái)監(jiān)控主機(jī)是否故障,然后根據(jù)選舉(篩選?排序)將從機(jī)轉(zhuǎn)為主機(jī)。即使主機(jī)重新連線,也是作為新主機(jī)的從機(jī)。

篩選機(jī)制:篩選所有處于下線的從機(jī),篩選所有沒有在規(guī)定時(shí)間響應(yīng)哨兵的info命令的從機(jī),篩選所有數(shù)據(jù)比較舊(通過設(shè)置down-after-milliseconds的值篩選)的從機(jī)。

哨兵模型選擇選擇新主機(jī)的機(jī)制(排序機(jī)制)為:

1、優(yōu)先級(jí)靠前的(redis.conf中replica-priority 的值越小,優(yōu)先級(jí)越高)

2、同樣位置,則偏移量最大的(獲得原主機(jī)數(shù)據(jù)最全的)

3、既同樣位置又同樣的偏移量,則runid最小的(每個(gè)redis實(shí)例啟動(dòng)后都會(huì)隨機(jī)生成一個(gè)40位的runid)

實(shí)現(xiàn)哨兵模式:在我們的 myredis 目錄下新建一個(gè)文件?sentinel.conf,必須為這個(gè)名字,不能自定義。文件中填寫:

sentinel monitor mymaster 127.0.0.1 6379 1

(哨兵監(jiān)控我的主機(jī) 主機(jī)服務(wù)器ip 同意數(shù)量)

其中:mymaster是為監(jiān)控對(duì)象起的服務(wù)器的名稱,1是指至少有多少個(gè)哨兵同意就可以遷移(從機(jī)代替主機(jī))的數(shù)量。

通過 redis-sentinel sentinel.conf命令啟動(dòng)哨兵,哨兵的默認(rèn)端口是26379

缺點(diǎn):

1,復(fù)制延遲,由于所有的寫操作都是在主機(jī)寫然后同步更新到從機(jī)上,所以從主機(jī)到從機(jī)會(huì)有一定的延遲,和網(wǎng)絡(luò)和從機(jī)數(shù)量也有關(guān)系。

2,sentinel選舉新主機(jī)時(shí)是沒辦法訪問redis的,存在訪問瞬斷的情況,可能損失數(shù)據(jù)。

3,主機(jī)壓力大,因?yàn)橹挥兄鳈C(jī)可以進(jìn)行寫操作。



redis6加入了多線程,但不是普遍意義上的多線程,redis的多線程部分只是用來處理網(wǎng)絡(luò)數(shù)據(jù)的讀寫和協(xié)議,執(zhí)行命令任然是單線程的。





【尚硅谷】Redis 6 入門到精通 超詳細(xì) 教程的評(píng)論 (共 條)

使用qq登录你需要登录后才可以评论。
额济纳旗| 齐河县| 郑州市| 尼勒克县| 商南县| 阿拉尔市| 墨竹工卡县| 吉首市| 文昌市| 桂阳县| 东阿县| 浦江县| 商洛市| 资源县| 闽清县| 巩义市| 师宗县| 云霄县| 云和县| 崇义县| 静安区| 海阳市| 莱芜市| 栾城县| 宜良县| 伊春市| 保德县| 五指山市| 梅河口市| 陵川县| 田阳县| 朔州市| 连平县| 彰化市| 闽清县| 政和县| 贵州省| 视频| 福建省| 灵寿县| 天津市|