提到Redis,大家肯定都聽過,並且應該都在專案中或多或少的使用過,也許你覺得Redis用起來挺簡單的呀,但如果有人問你下面的幾個問題(比如同事或者面試官),你能回答的上來嗎?
- 什麼是Redis?
- Redis能儲存哪幾種資料結構?
- Redis有幾種持久化機制?它們的優缺點分別是什麼?
- 哪些場景需要使用Redis?
- 什麼是快取雪崩,如何避免?
- 什麼是快取穿透,如何避免?
- 什麼是快取擊穿,如何避免?
如果你都能回答的上來,恭喜你,說明你對Redis有一定的瞭解,如果回答不上來,也沒關係,本系列部落格會對Redis進行一系列的講解,歡迎關注!
所謂工欲善其事,必先利其器,既然要學習Redis,首先我們至少得知道什麼是Redis以及如何安裝Redis環境,這也是本篇部落格的主要內容。
1. Redis簡介
什麼是Redis呢?
Redis是一個開源(BSD許可)的記憶體資料結構儲存,用作資料庫、快取和訊息代理。它支援諸如字串、雜湊、列表、集合、有序集合等資料結構。-- Redis官網
Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的高效能的key-value資料庫。-- 百度百科
Redis是一款依據BSD開源協議發行的高效能key-value儲存系統,通常被稱為資料結構伺服器。-- 其它網友
Redis是一個遠端記憶體資料庫,它不僅效能強勁,而且還具有複製特性以及為解決問題而生的獨一無二的資料模型。Redis提供了5種不同型別的資料結構,各式各樣的問題都可以很自然地對映到這些資料結構上。 -- 《Redis實戰》
Redis是一個速度非常快的非關係型資料庫,它可以儲存鍵(key)與5種不同型別值(value)之間的對映(mapping),可以將儲存在記憶體的鍵值對資料持久化到硬碟,可以使用複製特性來擴充套件讀效能,還可以使用客戶端分片來擴充套件寫效能。-- 《Redis實戰》
2. Redis環境安裝(Windows)
說明:Redis官方並沒有提供Windows版本的Redis,也不建議在生產環境使用Windows版本的Redis,我目前所在的公司生產環境Redis是部署在Linux伺服器的。
雖然Redis官方不支援Windows版本,但是微軟Microsoft Open Tech Group提供了1個Windows版本的Redis,下載地址:github.com/microsoftar…。

將下載好的檔案解壓到你喜歡的目錄,我這裡是E:\Tools\Redis-x64-3.0.504,如下所示:

雙擊上圖中紅色標記的redis-server.exe即可啟動Redis服務:

也可以開啟一個cmd視窗,切換到Redis所在目錄,然後執行如下命令啟動:
redis-server.exe redis.windows.conf
複製程式碼

通過這2種方式開啟,需要保證cmd視窗一直保持開啟狀態,關閉後客戶端就無法連線,如果伺服器重啟了,需要再次開啟Redis服務端,為了解決該問題,我們可以把Redis安裝成Windows服務:
cd E:\Tools\Redis-x64-3.0.504
redis-server --service-install redis.windows.conf
複製程式碼


你可以直接在介面上啟動/停止該服務,也可以執行cmd命令來啟動/停止/解除安裝該服務:
啟動服務:
redis-server --service-start
複製程式碼

停止服務:
redis-server --service-stop
複製程式碼

解除安裝服務:
redis-server --service-uninstall
複製程式碼

3. Redis環境安裝(Linux)
首先,我們需要將Linux環境下Redis的安裝包放到伺服器上去,這裡有2種方法,第1種方法是,開啟Redis官網的下載地址:redis.io/download,下載穩定版本到本機:

然後通過工具,比如Xftp,將本地下載的檔案上傳至Linux伺服器的某目錄下,比如我這裡要上傳的目錄是/mnt。
第2種方式是通過命令直接下載Redis的安裝包到伺服器的/mnt目錄下,具體命令如下所示:
cd mnt/
wget -q http://download.redis.io/releases/redis-5.0.7.tar.gz
複製程式碼



然後,執行如下命令解壓檔案:
tar -xzf redis-5.0.7.tar.gz
複製程式碼


然後,執行如下命令將解壓好的檔案移動到/usr/local目錄下,並進行編譯:
mv redis-5.0.7 /usr/local/
cd /usr/local/redis-5.0.7
make
複製程式碼

注意事項:執行完make命令後,螢幕會輸出好多資訊,大概有2~3屏的樣子
當看到如下資訊時,代表編譯完成:

然後,切換到/usr/local/redis-5.0.7/src目錄,執行make install
命令進行安裝:
cd src/
make install
複製程式碼

然後,切換到/usr/local/redis-5.0.7目錄,新建資料夾bin和etc,並將該目錄下的redis.conf檔案移動到etc目錄,
將/usr/local/redis-5.0.7/src目錄下的mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server
移動到剛剛建立的bin目錄:
cd ..
mkdir bin
mkdir etc
mv redis.conf etc/
cd src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server /usr/local/redis-5.0.7/bin/
複製程式碼

然後,切換到/usr/local/redis-5.0.7/etc目錄,修改下Redis的配置檔案redis.conf:
cd ..
cd etc/
vi redis.conf
複製程式碼

redis.conf主要修改以下4點:
-
將daemonize no改為daemonize yes,表示需要在後臺執行
-
將bind 127.0.0.1這一行註釋掉
這裡的bind指的是隻有指定的網段才能遠端訪問這個redis,註釋掉後,就沒有這個限制了。
-
將protect-mode yes改為protect-mode no
預設是protect-mode yes,不能遠端訪問,改為no之後,可以遠端訪問
-
新增
requirepass 123456
設定密碼(預設密碼為空)
最後,切換到/usr/local/redis-5.0.7/bin目錄,執行如下命令啟動Redis服務:
cd ..
cd bin/
redis-server /usr/local/redis-5.0.7/etc/redis.conf
複製程式碼
啟動後,可以執行如下命令檢視Redis是否啟動以及程式ID:
ps aux | grep redis-server
複製程式碼

4. Redis Hello World示例
開啟cmd視窗,開啟一個redis-cli互動視窗來簡單使用下Redis:
redis-cli.exe -h 127.0.0.1 -p 6379
複製程式碼
設定一個key-value快取,其中key為hello,value為hello world!:
set hello "hello world!"
複製程式碼
獲取key為hello的值:
get hello
複製程式碼

5. Redis Desktop Manager使用
雖然我們可以通過命令的方式來檢視Redis儲存的資料,但畢竟不太友好,這裡推薦個比較流行的工具:Redis Desktop Manager。
官網地址:redisdesktop.com/。
官網現在的版本2019.5需要付費才能使用,否則只有14天的試用期。

在2019年6份開啟還是下面這樣的,貌似漲價了啊,哈哈。

不過我們仍然可以下載之前不付費的版本,下載地址:github.com/uglide/Redi…。

安裝過程比較簡單,這裡不再贅述,安裝完成後,連線本機Windows環境下的Redis伺服器:

連線成功後,可以看到之前設定的值:

也可以連線遠端Linux環境下的Redis伺服器:



有些同學可能使用的工具是Another.Redis.Dsektop.Manager,這裡只貼下下載地址:electronjs.org/apps/anothe…,有興趣的同學可以自行下載。