項目9 結(jié)合Redis的MySQL運維_第1頁
項目9 結(jié)合Redis的MySQL運維_第2頁
項目9 結(jié)合Redis的MySQL運維_第3頁
項目9 結(jié)合Redis的MySQL運維_第4頁
項目9 結(jié)合Redis的MySQL運維_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

數(shù)據(jù)庫運維與管理項目9結(jié)合redis的MySQL運維教學(xué)目標知識目標1.掌握Redis的基本結(jié)構(gòu)和讀寫原理2.掌握Redis的安裝方法和常用命令3.掌握Redis的配置方法4.掌握RedisManager的使用方法能力目標1.能使用redis-cli命令監(jiān)控Redis服務(wù)狀態(tài)2.能使用RedisManager創(chuàng)建集群監(jiān)控3.能使用MySQL+Redis實現(xiàn)讀寫分離.素養(yǎng)目標1.培養(yǎng)精益求精的工匠意識2.提高自主學(xué)習(xí)能力3.提高解決問題能力.思政目標民族自豪感國產(chǎn)軟件振興的使命擔當項目9結(jié)合redis的MySQL運維項目場景:近年來,在Web開發(fā)過程中,MySQL+Redis逐漸成為常用的存儲方案。MySQL存儲著所有的業(yè)務(wù)數(shù)據(jù),根據(jù)業(yè)務(wù)規(guī)??刹捎孟鄳?yīng)的分庫分表、讀寫分離、主備容災(zāi)、數(shù)據(jù)庫集群等手段。MySQL使用基于磁盤的I/O訪問,基于服務(wù)響應(yīng)性能考慮,可將業(yè)務(wù)熱數(shù)據(jù)利用Redis緩存,使高頻業(yè)務(wù)數(shù)據(jù)可以直接從內(nèi)存讀取,從而提高系統(tǒng)整體響應(yīng)速度。最近天天電器商場的在線商城系統(tǒng)進行了全面升級,為了適應(yīng)高并發(fā)的“秒殺”活動,提高查詢速度,該系統(tǒng)采用了MySQL+Redis的存儲方案。項目知識導(dǎo)入一、Redis介紹與安裝

Redis(RemoteDictionaryServer,遠程字典服務(wù))是一個開源、使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value存儲數(shù)據(jù)庫。

Redis是一個Key-Value存儲系統(tǒng)。與Memcached類似,Redis支持的值類型相對更多,包括string(字符串)、list(列表)、set(集合)、zset(有序集合)和hash(散列類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove,取交集、并集、差集,以及更豐富的操作,而且這些操作都具有原子性。在此基礎(chǔ)上,Redis支持各種不同方式的排序。與Memcached一樣,為了保證效率,數(shù)據(jù)緩存在內(nèi)存中。二者的區(qū)別是Redis會周期性地把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實現(xiàn)Master-Slave(主從)同步。項目知識導(dǎo)入二、在Windows系統(tǒng)下安裝Redis

Redis支持32位和64位Windows系統(tǒng)。打開下載頁面,根據(jù)系統(tǒng)選擇相應(yīng)的壓縮包,如圖9-1所示。項目知識導(dǎo)入下載完成后,將Redis-x64-5.0.10.zip壓縮包解壓到D盤的Redis目錄下。打開命令提示符窗口,然后進入Redis目錄,執(zhí)行如下命令以啟動Redis服務(wù)。雖然前面啟動了Redis服務(wù),但是當關(guān)閉命令提示符窗口時,Redis服務(wù)就會停止。所以要把Redis安裝成Windows系統(tǒng)服務(wù),使Redis服務(wù)隨系統(tǒng)啟動而啟動。

在命令提示符窗口中執(zhí)行如下命令。

redis-server--service-installredis.windows-service.conf--loglevelverbose

命令執(zhí)行成功后,在Windows系統(tǒng)的服務(wù)管理界面上多了一個Redis服務(wù),這表示Redis服務(wù)安裝成功,如圖9-3所示(右圖所示)。

在服務(wù)管理界面,可以啟動和停止Redis服務(wù)。三、在Linux上安裝redis1.打開Linux系統(tǒng)下的命令提示符窗口,執(zhí)行如下命令下載Redis源碼包。wgethttp://download.redis.io/releases/redis-5.0.10.tar.gz2.將下載的Redis源碼包解壓,命令如下。tar-zxvfredis-5.0.10.tar.gz3.切換到解壓后的目錄,命令如下。cdredis-5.0.104.進行編譯安裝,命令如下。makemakeinstall至此,Redis安裝完畢。項目知識導(dǎo)入項目知識導(dǎo)入1.Linux系統(tǒng)下的前端啟動

由于前面安裝過程中沒有指定目錄,所以Linux系統(tǒng)會將可執(zhí)行文件存放在/usr/local/bin目錄中。

在終端窗口執(zhí)行如下命令。

[root@mmredis-5.0.10]#cd/usr/local/bin

[root@mmbin]#./redis-server

命令執(zhí)行結(jié)果如圖9-4所示。2.Linux系統(tǒng)下的后端啟動(1)將Redis源碼包中的redis.conf文件復(fù)制到/usr/local/bin目錄下,命令如下。[root@mmredis-5.0.10]#cpredis.conf/usr/local/bin/(2)編輯redis.conf文件,命令如下。[root@mmredis-5.0.10]#vi/usr/local/bin/redis.conf將“daemonizeno”改成“daemonizeyes”,如圖9-5所示。項目知識導(dǎo)入(3)啟動Redis,命令如下。[root@mmredis-5.0.10]#/usr/local/bin/redis-serverredis.conf(4)停止Redis,命令如下。[root@mmredis-5.0.10]#/usr/local/bin/redis-clishutdown項目知識導(dǎo)入四、Redis結(jié)構(gòu)與讀寫原理

(一)Redis數(shù)據(jù)庫結(jié)構(gòu)1.Redis服務(wù)器將所有數(shù)據(jù)庫都保存在服務(wù)器狀態(tài)redis.h/redisServer結(jié)構(gòu)的db數(shù)組中,db數(shù)組中每一項都是一個redis.h/redisDb結(jié)構(gòu)。redisServer結(jié)構(gòu)如下:2.每個Redis客戶端都有自己的目標數(shù)據(jù)庫,每當客戶端執(zhí)行命令時,目標數(shù)據(jù)庫就會成為這些命令的操作對象。默認情況下目標數(shù)據(jù)庫為0號數(shù)據(jù)庫,可以通過SELECT語句切換目標數(shù)據(jù)庫。redisClient結(jié)構(gòu)如下:(一)Redis數(shù)據(jù)庫結(jié)構(gòu)(續(xù))Redis數(shù)據(jù)庫結(jié)構(gòu)如圖9-6所示。每一個Redis服務(wù)器內(nèi)部的數(shù)據(jù)結(jié)構(gòu)都是一個redisDb[],該數(shù)組的大?。J為16)可以在redis.conf文件中配置,而所有的緩存操作(set、hset、get等)都是在redisDb[]中的一個redisDb(庫)上進行的,這個redisDb[]默認是redisDb[0]。(二)讀寫原理(二)讀寫原理Redis存儲結(jié)構(gòu)示意如圖9-7所示。五、Redis常用命令1.redis-cliredis-cli命令用于連接本地Redis服務(wù),執(zhí)行該命令可以進入Redis的腳本控制臺。執(zhí)行exit(或quit)命令可以退出Redis的腳本控制臺。命令如下。2.setkeyvaluesetkeyvalue是緩存設(shè)置命令,用于設(shè)置一個鍵名為key的緩存,緩存內(nèi)容為value。例如設(shè)置一個鍵名為“key1”的緩存,其內(nèi)容為“hello,redis”,命令如下。[root@mmbin]#redis-cli:6379>:6379>exit[root@mmbin]#:6379>setkey1'hello,redis'OK五、Redis常用命令3.getkeygetkey是緩存獲取命令。keys(pattern)命令用于返回滿足給定pattern的所有key。例如:4.delkeydelkey是緩存刪除命令。例如::6379>keys*1)"key1":6379>getkey1"hello,redis":6379>delkey1(integer)1:6379>keys*(emptylistorset):6379>五、Redis常用命令5.flushallflushall是刪除所有緩存的命令。例如:6.dbsizedbsize是查看當前庫中的key數(shù)量的命令。例如:7.CLIENTLISTCLIENTLIST是查看客戶端列表命令。例如::6379>flushallOK:6379>keys*(emptylistorset):6379>dbsize(integer)1:6379>CLIENTLISTid=5addr=:43179fd=8name=age=4idle=0flags=Ndb=0sub=0psub=0multi=-1qbuf=26qbuf-free=32742obl=0oll=0omem=0events=rcmd=client五、Redis常用命令

8.CLIENTKILLCLIENTKILL是關(guān)閉某個客戶端命令。例如:9.SAVESAVE用于將數(shù)據(jù)保存到磁盤文件,下次啟動Redis服務(wù)時,自動加載。例如六、Redis配置1、常用配置項

Redis的配置文件位于Redis安裝目錄下,文件名為redis.conf(Windows系統(tǒng)下名為redis.windows.conf)??梢酝ㄟ^config命令查看或設(shè)置配置項。使用命令查看所有配置項:CONFIGGET*(*號獲取所有配置項)。表9-1Redis常用配置項說明序號配置項配置項說明1daemonizenoRedis默認不是以守護進程的方式運行,可以通過該配置項修改,使用yes啟用守護進程(在Windows系統(tǒng)中不支持守護線程的配置為no)。2pidfile/var/run/redis.pid當Redis以守護進程方式運行時,Redis默認會把pid寫入/var/run/redis.pid文件,可以通過pidfile指定。3port6379指定Redis監(jiān)聽端口,默認端口為6379。4bind綁定的主機地址。5timeout300在客戶端閑置多長時間(秒)后關(guān)閉連接,如果指定為0,表示關(guān)閉該功能。6loglevelnotice指定日志記錄級別,Redis總共支持四個級別:debug、verbose、notice、warning,默認為notice。7logfilestdout日志記錄方式,默認為標準輸出,如果配置Redis為守護進程方式運行,而這里又配置為日志記錄方式為標準輸出,則日志將會發(fā)送給/dev/null。8databases16設(shè)置數(shù)據(jù)庫的數(shù)量,默認數(shù)據(jù)庫為0,可以使用SELECT命令在連接上指定數(shù)據(jù)庫id。表9-1Redis常用配置項說明序號配置項配置項說明9save<seconds><changes>

指定在多長時間內(nèi),有多少次更新操作,就將數(shù)據(jù)同步到數(shù)據(jù)文件,可以多個條件配。Redis默認配置文件中提供了三個條件:save9001save30010save6010000分別表示900秒(15分鐘)內(nèi)有1個更改,300秒(5分鐘)內(nèi)有10個更改及60秒內(nèi)有10000個更改。10rdbcompressionyes指定存儲至本地數(shù)據(jù)庫時是否壓縮數(shù)據(jù),默認為yes,Redis采用LZF壓縮,如果為了節(jié)省CPU時間,可以關(guān)閉該選項,但會導(dǎo)致數(shù)據(jù)庫文件變的巨大。11dbfilenamedump.rdb指定本地數(shù)據(jù)庫文件名,默認值為dump.rdb。12dir./指定本地數(shù)據(jù)庫存放目錄。13replicaof<masterip><masterport>設(shè)置當本機為slave服務(wù)時,設(shè)置master服務(wù)的IP地址及端口,在Redis啟動時,它會自動從master進行數(shù)據(jù)同步。14masterauth<master-password>當master服務(wù)設(shè)置了密碼保護時,slave服務(wù)連接master的密碼。15requirepassfoobared設(shè)置Redis連接密碼,如果配置了連接密碼,客戶端在連接Redis時需要通過AUTH<password>命令提供密碼,默認關(guān)閉。16maxclients128設(shè)置同一時間最大客戶端連接數(shù),默認無限制,Redis可以同時打開的客戶端連接數(shù)為Redis進程可以打開的最大文件描述符數(shù),如果設(shè)置maxclients0,表示不作限制。當客戶端連接數(shù)到達限制時,Redis會關(guān)閉新的連接并向客戶端返回maxnumberofclientsreached錯誤信息。表9-1Redis常用配置項說明序號配置項配置項說明17maxmemory<bytes>指定Redis最大內(nèi)存限制,Redis在啟動時會把數(shù)據(jù)加載到內(nèi)存中,達到最大內(nèi)存后,Redis會先嘗試清除已到期或即將到期的Key。18appendonlyno指定是否在每次更新操作后進行日志記錄,Redis在默認情況下是異步的把數(shù)據(jù)寫入磁盤,如果不開啟,可能會在斷電時導(dǎo)致一段時間內(nèi)的數(shù)據(jù)丟失。默認為no。19appendfilenameappendonly.aof指定更新日志文件名,默認為appendonly.aof。20appendfsynceverysec指定更新日志條件,共有3個可選值:no:表示等操作系統(tǒng)進行數(shù)據(jù)緩存同步到磁盤(快)。always:表示每次更新操作后手動調(diào)用fsync()將數(shù)據(jù)寫到磁盤(慢,安全)。everysec:表示每秒同步一次(折中,默認值)。21vm-enabledno指定是否啟用虛擬內(nèi)存機制,默認值為no22vm-swap-file/tmp/redis.swap虛擬內(nèi)存文件路徑,默認值為/tmp/redis.swap,不可多個Redis實例共享。23vm-max-memory0將所有大于vm-max-memory的數(shù)據(jù)存入虛擬內(nèi)存,無論vm-max-memory設(shè)置多小,所有索引數(shù)據(jù)都是內(nèi)存存儲的(Redis的索引數(shù)據(jù)就是keys),也就是說,當vm-max-memory設(shè)置為0的時候,其實是所有value都存在于磁盤。默認值為0。24vmsize32Redisswap文件分成了很多的page,一個對象可以保存在多個page上述,但一個page上不能被多個對象共享,vmsize是要根據(jù)存儲的數(shù)據(jù)大小來設(shè)定的,建議如果存儲很多小對象,page大小最好設(shè)置為32或者64bytes;如果存儲很大大對象,則可以使用更大的page,如果不確定,就使用默認值。25vms134217728設(shè)置swap文件中的page數(shù)量,由于頁表(一種表示頁面空閑或使用的bitmap)是在放在內(nèi)存中的,在磁盤上每8個pages將消耗1byte的內(nèi)存。表9-1Redis常用配置項說明序號配置項配置項說明26vm-max-threads4設(shè)置訪問swap文件的線程數(shù),最好不要超過機器的核數(shù),如果設(shè)置為0,則所有對swap文件的操作都是串行的,可能會造成比較長時間的延遲。默認值為4。27glueoutputbufyes設(shè)置在向客戶端應(yīng)答時,是否把較小的包合并為一個包發(fā)送,默認為開啟。28hash-max-zipmap-entries64hash-max-zipmap-value512指定在超過一定的數(shù)量或者最大的元素超過某一臨界值時,采用一種特殊的哈希算法。29activerehashingyes指定是否激活重置哈希算法,默認為開啟。30include/path/to/local.conf指定包含其他的配置文件,可以在同一主機上多個Redis實例之間使用同一份配置文件,而同時各個實例又擁有自己的特定配置文件。2、編輯配置可以通過修改redis.conf文件或使用CONFIGSET命令來修改配置。命令語法格式如下。redis:6379>CONFIGSETCONFIG_SETTING_NAMENEW_CONFIG_VALUE例七、Redis集群Redis支持三種集群方案:主從復(fù)制模式、Sentinel(哨兵)模式、Cluster集群模式。為了解決Redis高可用模式下集群動態(tài)擴容困難、寫操作并發(fā)瓶頸問題,在3.0之后Redis推出了Redis-Cluster集群模式。1、Redis集群的數(shù)據(jù)分片Redis集群沒有使用一致性哈希,而是引入了“哈希槽”的概念。Redis集群有16384個哈希槽,每個key通過CRC16校驗后對16384取模來決定放置哪個槽。集群的每個節(jié)點負責一部分哈希槽,舉個例子,比如當前集群有3個節(jié)點,那么:節(jié)點A包含0到5500號哈希槽。節(jié)點B包含5501到11000號哈希槽。節(jié)點C包含11001到16384號哈希槽。七、Redis集群2、Redis集群的主從復(fù)制模型為了保障在部分節(jié)點故障或者大部分節(jié)點無法通信的情況下集群仍然可用,集群使用了主從復(fù)制模型,即每個節(jié)點都會有N到1個復(fù)制品。在具有A、B、C三個節(jié)點的集群示例中,在沒有復(fù)制模型的情況下,如果節(jié)點B發(fā)生故障,那么整個集群就會因為缺少5501-11000這個范圍的哈希槽而不可用。而如果在集群創(chuàng)建的時候為每個節(jié)點添加一個從節(jié)點A1、B1、C1,那么整個集群便有三個Master節(jié)點和三個Slave節(jié)點組成,這樣,在節(jié)點B故障后,集群便會選舉B1為新的主節(jié)點繼續(xù)服務(wù),整個集群便不會因為哈希槽找不到而不可用。八、RedisManagerRedisManager是Redis一站式管理平臺,支持集群的監(jiān)控、安裝、管理、告警及基本的數(shù)據(jù)操作功能。集群監(jiān)控:支持監(jiān)控Memory、Clients等Redis重要指標;可實時查看RedisInfo、RedisConfig和SlowLog;集群創(chuàng)建:支持Docker、Machine、Humpback方式;集群管理:支持節(jié)點Forget、ReplicateOf、Failover、MoveSlot、Start、Stop、Restart、Delete、修改配置等功能;集群告警:支持Memory、Clients等指標(同監(jiān)控指標),支持郵件、企業(yè)微信APP、企業(yè)微信Webhook、釘釘告警;工具箱:支持Query、Scan及基本的數(shù)據(jù)操作。項目任務(wù)分解任務(wù)9-1:使用Redis-cli監(jiān)控Redis服務(wù)狀態(tài)任務(wù)說明

在使用Redis的過程中,可能會遇到很多問題,需要隨時能診斷、觀察Redis的健康情況。Redis提供了info命令,可以讓數(shù)據(jù)庫管理員觀察它各方面的信息、運行狀況。本任務(wù)要求使用info命令查看其所提供的信息。任務(wù)實施過程項目任務(wù)分解任務(wù)9-2:

搭建Redis

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論