提到Redis,大家肯定都聽過,並且應該都在項目中或多或少的使用過,也許你覺得Redis用起來挺簡單的呀,但如果有人問你下麵的幾個問題(比如同事或者面試官),你能回答的上來嗎? 1. 什麼是Redis? 2. Redis能存儲哪幾種數據結構? 3. Redis有幾種持久化機制?它們的優缺點分別是什麼 ...
提到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,下載地址:https://github.com/microsoftarchive/redis/releases。
將下載好的文件解壓到你喜歡的目錄,我這裡是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官網的下載地址:https://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。
官網地址:https://redisdesktop.com/。
官網現在的版本2019.5需要付費才能使用,否則只有14天的試用期。
在2019年6份打開還是下麵這樣的,貌似漲價了啊,哈哈。
不過我們仍然可以下載之前不付費的版本,下載地址:https://github.com/uglide/RedisDesktopManager/releases/tag/0.8.8。
安裝過程比較簡單,這裡不再贅述,安裝完成後,連接本機Windows環境下的Redis伺服器:
連接成功後,可以看到之前設置的值:
也可以連接遠程Linux環境下的Redis伺服器:
有些同學可能使用的工具是Another.Redis.Dsektop.Manager,這裡只貼下下載地址:http://electronjs.org/apps/anotherredisdesktopmanager,有興趣的同學可以自行下載。
6. 源碼及參考
如果覺得文章寫的不錯,歡迎關註我的微信公眾號:「申城異鄉人」,所有博客會同步更新。
如果有興趣,也可以添加我的微信:zwwhnly_002,一起交流和探討技術。