docker部署redis快取記憶體
docker部署redis快取記憶體
redis
- 官網
Redis是一個開源(BSD許可)的記憶體資料結構儲存,用作資料庫、快取和訊息代理。它支援諸如字串、雜湊、列表、集合、帶有範圍查詢的排序集、點陣圖、日誌、帶有半徑查詢的地理空間索引和流之類的資料結構。Redis具有內建的複製、Lua指令碼、LRU驅逐、事務和不同級別的磁碟永續性,並透過Redis Sentinel和Redis Cluster自動分割槽提供高可用性。
- 歷史
2008年,義大利一家創業公司Merzia的創始人Salvatore Sanfilippo為了避免MySQL的低效能,親自定做一個資料庫,並於2009年開發完成,這個就是Redis。
短短几年,使用者資料量猛增。國內如新浪微博、街旁和知乎等,國外如GitHub、暴雪等,都是Redis的使用者。世界上最大規模的Redis快取,就是新浪微博團隊打造的。熱點新聞的時候。Redis可以達到最多每秒10萬的讀寫。
- 快取記憶體介紹
- 快取記憶體利用記憶體保持資料,讀寫速度遠超過硬碟
- 快取記憶體可以減少IO操作,降低IO壓力
微信紅包就是很好的例子,在發紅包的時候,紅包資訊就儲存在快取中,搶的人也是從快取記憶體中取。春節當天幾個億的人來搶也保持系統的穩定。
- 一般的應用,都分為常用和個性化,個性化可能是從資料庫中獲取的。但是常用的可能就是從快取記憶體中獲取的。
- Redis叢集介紹
Redis目前的叢集方案為以下幾種:
- RedisCluster:官方推薦,沒有中心點(主節點不是中心節點,而是儲存資料最多的,最新的,同步後主節點就消失了)。
- Codis:中介軟體,存在中心節點(中心節點掛了,徹底玩完)。
- Twemproxy:中介軟體產品,存在中心節點。
- RedisCluster
- 無中心節點,客戶端與redis節點直連,不需要中間代理層(很類似PXC)
- 資料可以被分片儲存(每個節點儲存的內容是不一樣的)
- 管理方便,後續可自行增加或者摘除節點
- 本次搭建的Redis節點的示意圖
- 主從同步
上邊說過,RedisCluster的資料是分片儲存的,如果redis掛了就會丟失一部分的資料。為了避免這個問題的產生,就必須引入主從同步的機制
- Redis叢集中的資料複製是透過主從同步來實現的。
- 主節點(Master)把資料分發給從節點(Slave)
- 主從同步的好處在於高可用,Rredis節點有冗餘設計
- Redis叢集高可用
- Redis叢集中應該包含奇數個Master,至少應該是3個,如果其中一個掛的,剩餘奇數個可以進行選舉至少過半的情況。很容易選擇到master節點。
- Redis叢集中每個Master都應該有Slave
- 為什麼Redis不搭建負載均衡
因為本身前後端分離專案,請求後端的時候,後端對請求已經做了負載均衡所以Redis不需要做負載均衡。
搭建叢集
應用 | IP地址 | 服務 | 配置 | 安裝應用 | 安裝方式 |
---|---|---|---|---|---|
docker-mysql | 192.168.66.101 | docker-redis-cluster | 雙核 8g記憶體 | docker-redis-cluster | docker |
(1). 虛擬機器vagrant講述安裝的步驟
(2).機器window/mac開通遠端登入root使用者下
- 建立資料夾,配置
- redis.conf
配置了5個地方
- daemonize yes
以後臺程式執行
- cluster-enabled yes
開啟叢集
- cluster-config-file 150000
超時時間
- appendonly yes
開啟AOF模式,儲存檔案的形式
- requirepass idig8.com
認證密碼
- cluster-config-file nodes.conf
叢集配置檔案
一共要建立6個redis叢集
- 建立容器(r1)
想加上安全驗證,但是不生效,查了下daemonize yes,他的作用是是否開啟守護程式模式,在該模式下,redis會在後臺執行,並將程式pid號寫入至redis.conf選項pidfile設定的檔案中,此時redis將一直執行,除非手動kill該程式。所以進入這個容器內手動選擇載入配置檔案。
- 配置啟動
- 建立容器(r2)
- 配置啟動
- 建立容器(r3)
- 配置啟動
- 建立容器(r4)
- 配置啟動
- 建立容器(r5)
- 配置啟動
- 建立容器(r6)
- 配置啟動
redis-trib.rb
redis內自帶叢集工具redis-trib.rb,操作redis-trib需要很多指令很麻煩。建議使用我提供的映象,裡面什麼都裝好了老鐵就根據我的命令操作就可以了 。
- 建立叢集命令
- 檢視叢集資訊
!/upload-images.jianshu.io/upload_images/11223715-0123418e8224c25c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 安裝叢集的時候報的錯誤
can't connect to node 172.19.* redis.conf檔案
- bind 127.0.0.1 註釋掉
- requirepass idig8.com 註釋掉
redis叢集密碼設定
- 密碼設定(推薦)
方式一:修改所有Redis叢集中的redis.conf檔案加入:
說明:這種方式需要重新啟動各節點
方式二:進入各個例項進行設定:
之後分別使用./redis-cli -c -p 6379,./redis-cli -c -p 6379…..命令給各節點設定上密碼。
注意:各個節點密碼都必須一致,否則Redirected就會失敗, 推薦這種方式,這種方式會把密碼寫入到redis.conf裡面去,且不用重啟。
用方式二修改密碼,./redis-trib.rb check 172.19.0.2:6379執行時可能會報[ERR] Sorry, can't connect to node 172.19.0.2:6379,因為6379的redis.conf沒找到密碼配置。
- 設定密碼之後如果需要使用redis-trib.rb的各種命令
如:./redis-trib.rb check 127.0.0.1:6379,則會報錯ERR] Sorry, can’t connect to node 127.0.0.1:6379
解決辦法:vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis/client.rb,然後修改passord
注意:client.rb路徑可以透過find命令查詢:find / -name 'client.rb'
帶密碼訪問叢集
PS:整個redis叢集已經安裝完畢,3個master3個salve,如果1個master掛了對應的slave自動升級為master,掛的原來的master如果重新啟動就變成了slave。我嘗試用官方的docker映象redis來進行全流程的安裝,在docker run命令中加入配置檔案啟動,這種方式是有問題的,到建立叢集的時候還是會報錯的,還是建議用我的映象,這樣穩定些。並且裡面自帶redis-trib.rb。
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在itpub、部落格園、CSDN和個人微 信公眾號( DB寶)上有同步更新 ● 本文itpub地址: http://blog.itpub.net/26736162 ● 本文部落格園地址: http://www.cnblogs.com/lhrbest ● 本文CSDN地址: https://blog.csdn.net/lihuarongaini ● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ● DBA寶典今日頭條號地址: ........................................................................................................................ ● QQ群號: 230161599 、618766405 ● 微 信群:可加我微 信,我拉大家進群,非誠勿擾 ● 聯絡我請加QQ好友 ( 646634621 ),註明新增緣由 ● 於 2020-04-01 06:00 ~ 2020-04-30 24:00 在西安完成 ● 最新修改時間:2020-04-01 06:00 ~ 2020-04-30 24:00 ● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店: ● 小麥苗出版的資料庫類叢書: http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用網路班: http://blog.itpub.net/26736162/viewspace-2148098/ ● 小麥苗騰訊課堂主頁: https://lhr.ke.qq.com/ ........................................................................................................................ 使用 微 信客戶端掃描下面的二維碼來關注小麥苗的微 信公眾號( DB寶)及QQ群(DBA寶典)、新增小麥苗微 信, 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2684760/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CPU快取記憶體快取記憶體
- 多核cpu、cpu快取記憶體、快取一致性協議、快取行、記憶體快取記憶體協議
- 記憶體快取選型記憶體快取
- 突然掛了!Redis快取都在記憶體中,這下完了!Redis快取記憶體
- CPU快取和記憶體屏障快取記憶體
- 談談CPU快取記憶體快取記憶體
- django 快取表格到記憶體Django快取記憶體
- Java記憶體快取-通過Google Guava建立快取Java記憶體快取GoGuava
- MRAM快取記憶體的組成快取記憶體
- 高效能記憶體快取 ristretto記憶體快取
- ASP.NET Core - 快取之記憶體快取(下)ASP.NET快取記憶體
- ASP.NET Core - 快取之記憶體快取(上)ASP.NET快取記憶體
- Java記憶體快取-通過Map定製簡單快取Java記憶體快取
- iOS開發之記憶體與快取iOS記憶體快取
- Oracle Exadata與SGA快取記憶體CQOracle快取記憶體
- 建立快取記憶體機制-java版快取記憶體Java
- 淺談快取寫法(三):記憶體快取該如何設計快取記憶體
- Redis記憶體——記憶體消耗(記憶體都去哪了?)Redis記憶體
- 快取記憶體一致性協議MESI與記憶體屏障快取記憶體協議
- TMCache原始碼分析(一)—TMMemoryCache記憶體快取原始碼記憶體快取
- TMCache原始碼分析(一)---TMMemoryCache記憶體快取原始碼記憶體快取
- iOS 除SDWebImage之外清理記憶體中快取iOSWeb記憶體快取
- 快取及使用 Circuit Breaker 限制記憶體使用快取UI記憶體
- laravel redirect快閃記憶體blade讀取不到Laravel記憶體
- 直接記憶體和堆記憶體誰快記憶體
- Android 記憶體快取框架 LruCache 的原始碼分析Android記憶體快取框架原始碼
- Linux系統手動釋放記憶體快取Linux記憶體快取
- 鐵威馬NAS如何使用SSD快取記憶體?快取記憶體
- java 記憶體模型-03-快取和重排序Java記憶體模型快取排序
- 關於redis記憶體分析,記憶體優化Redis記憶體優化
- redis的記憶體滿了之後,redis如何回收記憶體嗎Redis記憶體
- Ehcache介紹及整合Spring實現快取記憶體Spring快取記憶體
- CPU、記憶體、快取的關係詳細解釋!記憶體快取
- 使用Go實現健壯的記憶體型快取Go記憶體快取
- 帶你走進memcache,老牌記憶體快取技術記憶體快取
- 序列SPI NOR快閃記憶體VS並行NOR快閃記憶體記憶體並行
- Redis效能篇(四)Redis記憶體碎片Redis記憶體
- GO語言————6.12 通過記憶體快取來提升效能Go記憶體快取