天天看點

搭建redis及主從複制

redis介紹

Redis(Remote Dictionary Server) 是一個使用 C 語言編寫的,開源的(BSD許可)高性能非關系型(NoSQL)的鍵值對資料庫。

Redis 可以存儲鍵和五種不同類型的值之間的映射。鍵的類型隻能為字元串,值支援五種資料類型:字元串、清單、集合、散清單、有序集合。

與傳統資料庫不同的是 Redis 的資料是存在記憶體中的,是以讀寫速度非常快,是以 redis 被廣泛應用于緩存方向,每秒可以處理超過 10萬次讀寫操作,是已知性能最快的Key-Value DB。另外,Redis 也經常用來做分布式鎖。除此之外,Redis 支援事務 、持久化、LUA腳本、LRU驅動事件、多種叢集方案。

使用場景:

Redis的五個常見使用場景

1、會話緩存(Session Cache)

最常用的一種使用Redis的情景是會話緩存(session cache)。用Redis緩存會話比其他存儲(如Memcached)的優勢在于:Redis提供持久化。當維護一個不是嚴格要求一緻性的緩存時,如果使用者的購物車資訊全部丢失,大部分人都會不高興的,現在,他們還會這樣嗎?

幸運的是,随着 Redis 這些年的改進,很容易找到怎麼恰當的使用Redis來緩存會話的文檔。甚至廣為人知的商業平台Magento也提供Redis的插件。

2、全頁緩存(FPC)

除基本的會話token之外,Redis還提供很簡便的FPC平台。回到一緻性問題,即使重新開機了Redis執行個體,因為有磁盤的持久化,使用者也不會看到頁面加載速度的下降,這是一個極大改進,類似PHP本地FPC。

再次以Magento為例,Magento提供一個插件來使用Redis作為全頁緩存後端。

此外,對WordPress的使用者來說,Pantheon有一個非常好的插件 wp-redis,

這個插件能幫助你以最快速度加載你曾浏覽過的頁面。

3、隊列(秒殺,搶購,12306)list資料類型的使用

Reids在記憶體存儲引擎領域的一大優點是提供 list 和 set 操作,這使得Redis能作為一個很好的消息隊列平台來使用。Redis作為隊列使用的操作,就類似于本地程式語言(如Python)對 list 的 push/pop 操作。

如果你快速的在Google中搜尋“Redis queues”,你馬上就能找到大量的開源項目,這些項目的目的就是利用Redis建立非常好的後端工具,以滿足各種隊列需求。例如,Celery有一個背景就是使用Redis作為broker,你可以從這裡去檢視。

4、排行榜/計數器(set資料類型的使用)

Redis在記憶體中對數字進行遞增或遞減的操作實作的非常好。集合(Set)和有序集合(Sorted Set)也使得我們在執行這些操作的時候變的非常簡單,Redis隻是正好提供了這兩種資料結構。是以,我們要從排序集合中擷取到排名最靠前的10個使用者–我們稱之為“user_scores”,我們隻需要像下面一樣執行即可:

當然,這是假定你是根據你使用者的分數做遞增的排序。如果你想傳回使用者及使用者的分數,你需要這樣執行:

ZRANGE user_scores 0 10 WITHSCORES

Agora Games就是一個很好的例子,用Ruby實作的,它的排行榜就是使用Redis來存儲資料的,你可以在這裡看到。

5、釋出/訂閱

最後(但肯定不是最不重要的)是Redis的釋出/訂閱功能。釋出/訂閱的使用場景确實非常多。我已看見人們在社交網絡連接配接中使用,還可作為基于釋出/訂閱的腳本觸發器,甚至用Redis的釋出/訂閱功能來建立聊天系統!(不,這是真的,你可以去核實)。

Redis提供的所有特性中,我感覺這個是喜歡的人最少的一個,雖然它為使用者提供如果此多功能。

redis的資料類型:

Redis支援5種資料類型:string(字元串),hash(哈希),list(清單),set(集合)及zset(sorted set:有序集合)。

接下來是搭建過程

環境準備:

IP 服務
192.168.0.103 redis主
192.168.0.101 redis從

redis下載下傳位址: https://redis.io/download

一、下載下傳redis包編譯安裝

[[email protected] bin]# wget https://download.redis.io/releases/redis-6.2.4.tar.gz
[[email protected] bin]# tar -zxf redis-6.2.4.tar.gz -C /usr/local/
[[email protected] bin]# cd /usr/local/redis-6.2.4/
[[email protected] redis-6.2.4]# make && make install PREFIX=/usr/local/redis
           
搭建redis及主從複制

二、建立主配置檔案存放目錄

[[email protected] bin]# mkdir /usr/local/redis/etc
[[email protected] bin]# cp -a /usr/local/redis-6.2.4/redis.conf  /usr/local/redis/etc/
           

三、啟動redis-server

[[email protected] etc]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

搭建redis及主從複制

啟動成功,這是redis運作界面,在這個界面可以看到對redis的所有操作。

但下面有一個WARING,這裡的告警再說目前的TCP核心檔案裡配置的連接配接數較小,因為redis的連接配接數會超過目前的值,如有需要,可以将值設定成1024或2048,如果是測試環境可以設定成511。

優化redis,修改TCP核心檔案 先Ctrl+C結束目前前台運作服務,之後修改檔案

修改後啟動就不會出現WARING

搭建redis及主從複制

目前是前台工作,會影響使用者對伺服器的其他操作,那咱們可以通過redis配置檔案把前台服務改成背景。當然也可以通過

在啟動服務指令後面添加&也是可以。

搭建redis及主從複制

重新啟動redis就會在背景運作

[[email protected] etc]# pkill redis
[[email protected] etc]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
           
搭建redis及主從複制
redis搭建完畢

redis主從複制

主伺服器上不需要操作

一、隻需要在當從伺服器的redis配置檔案中末尾添加 slaveof masterIP redis端口

[[email protected] etc]# vim /usr/local/redis/etc/redis.con

搭建redis及主從複制

如果主伺服器設定了redis密碼需要在末尾再添加一行

masterauth redis密碼

搭建redis及主從複制

設定完成後儲存并重新開機從伺服器redis

二、連接配接上從伺服器檢視主從連接配接配置資訊

搭建redis及主從複制

master_host:192.168.0.103 #主節點的Host名稱或IP位址

master_port:6379 #主節點監聽的TCP端口

master_link_status:up #對master的連接配接(up或者down)

master_last_io_seconds_ago:3 #自上次與主節點互動以來,經過的秒數

master_sync_in_progress:0 #訓示主節點正在與從節點同步數

三、如果能查詢到狀态,則在主伺服器上建立鍵值測試是否同步(主伺服器可以讀寫,從伺服器隻能讀)

[[email protected] bin]# ./redis-cli -h 127.0.0.1

127.0.0.1:6379> set test 123

OK

搭建redis及主從複制

登陸從伺服器檢視

搭建redis及主從複制

能查詢到即可完成

繼續閱讀