來源公眾號平頭哥的技術博文 ,
作者平頭哥
Redis
Redis 是一款比較常用的 NoSQL 資料庫,我們通常使用 Redis 來做緩存,這是一篇關於 Redis 安裝的文章,所以不會涉及到 Redis 的高級特性和使用場景,Redis 能夠兼容絕大部分的 POSIX 系統,例如 Linux、OS X 等,但是很遺憾不支持在 Windows 上安裝,當然如果你需要在 windows 下安裝 redis 的話,也是可以的,微軟公司的開源技術組在 GitHub 上 維護一個 Redis 的分支,GitHub 地址為:https://github.com/microsoftarchive/redis,我看了一下這上面的版本比較舊,所以我個人不推薦使用這個來安裝 Redis ,Windows 用戶可以使用 Docker 容器來安裝,也是非常方便、簡單的,接下來我們就一起來看看 Redis 的安裝方式吧。
1、Linux 系統下安裝 redis
安裝
在 redis 官網中有安裝教程,連結:https://redis.io/download,安裝步驟我拷貝過來了,步驟如下:
$ wget http://download.redis.io/releases/redis-5.0.6.tar.gz
$ tar xzf redis-5.0.6.tar.gz
$ cd redis-5.0.6
$ make
我在 /usr/local 目錄下面操作的這些命令,也就是說 Redis 的安裝目錄為 /usr/local ,這些命令執行完之後你的機器上安裝好 Redis ,在安裝的過程中,如果你的機器上沒有安裝 gcc ,你安裝好 gcc 之後再 make 可能會報以下錯誤
jemalloc/jemalloc.h: No such file or directory
當時沒有截取詳細的錯誤信息,只把主要的一段截取出來了,這個錯誤的原因是我們上一次 make 報錯之後,有編譯後的文件,所以我們需要清除上一次的殘留文件再重新編譯,將 make 換成 make distclean && make 就可以了。
redis.conf 文件
redis.conf 是 Redis 的配置文件,redis 的所有配置有在這個文件裡面,這個文件挺大的有接近 1400 行,有關 redis 的操作、使用說明都在裡面,可以詳細的閱讀閱讀這個配置文件,大部分情況下我們使用默認配置就行,只需要設置少量配置就行。redis.conf 的存放位置在 Redis 的安裝目錄下,我這裡是 /usr/local/redis-5.0.5 目錄下,一起來看看我們可能會修改的幾個配置:
好像大概設置這幾個就好了,更多關於 redis.conf 的配置,你可以詳細閱讀 redis.conf 配置文件或者查閱相關手冊。
redis 的啟動
Redis 的啟動非常簡單,Redis 安裝完成之後,會在 /usr/local/redis-5.0.5/src 存放 Redis 的 shell 交互命令,其中有一個 redis-server ,這個就是 Redis 的啟動命令,執行:
./redis-server /usr/local/redis-5.0.5/redis.conf
後面跟的是 redis.conf 的文件路徑,不出意外的話我們將啟動成功,你會看到如下介面:
redis 啟動
這裡我們使用的是守護進程的方式啟動,所以不會出現帶有 redis logo 的啟動介面,我們可以使用 shell 命令登錄到 Redis 中,還是在 src 目錄下面,執行下面這條命令:
./redis-cli
這命令你就進入了 shell 交互介面,./redis-cli 命令可以帶一些參數,例如 -h IP 這個就可以進入指定機器的 Redis 實例,進入之後你就可以進行一些操作了,如下圖所示:
redis 操作
redis 關閉
Redis 的關閉方式有兩種,一種是在 shell 交互介面關閉,另一種是 kill + 進程號關閉 Redis 實例的方式
shell 交互介面關閉
shutdown [nosave|save]
在 shell 交互介面輸入 shutdown 命令就可以關閉 Redis 實例,後面有一個可選參數,nosave 就是不將內存中的數據持久化,save 就是將內存中的數據持久化。shutdown 關閉方式是比較優雅的關閉方式,建議使用這種關閉方式
Kill + 進程號關閉 Redis 實例
使用 ps -ef|grep redis 查看 Redis 進程號,如下圖所示:
查看 redis 進程號
在這裡找到我們需要關閉 redis 實例的進程號,比如這裡我們的進程號為 27133,那麼我們就直接使用 kill 27133 關閉 Redis 實例服務,這種方式我們需要注意一個地方,那就是需要我們去把 pid 文件刪掉,pid 文件存放的位置我們在 redis.conf 里配置的 pidfile /var/run/redis_6379.pid,我們需要到 /var/run 目錄下把 redis_6379.pid 刪掉,這樣下一次才能正常重啟 Redis 服務。
上面兩種方式都可以關閉 Redis 服務,隨便選一種都行,但是切記不要使用 Kill 9 方式關閉 Redis 進程,這樣 Redis 不會進行持久化操作,除此之外,還會造成緩衝區等資源不能優雅關閉,極端情況下會造成 AOF 和複製丟失數據的情況
redis 開機自啟動
在伺服器上我們可能需要將 Redis 設置為開機自啟動,其實這個也非常簡單,我們只需要做以下四步操作即可。
1、 編寫配置腳本 vim /etc/init.d/redis
2、Docker 安裝 Redis
Docker 安裝 Redis 整體來說比較方便,我說的是非生產環境,就是自己搭著測試或者學習的環境,下面的步驟全部建立在你已經在你的電腦上安裝了 Docker 的基礎上,下面就來開啟安裝之旅。
1、拉取 redis 鏡像
docker pull redis
2、快速啟動
docker run -p 6379:6379 --name myredis -d redis redis-server --appendonly yes
這種方式啟動使用的默認的 redis.conf 配置,我們先來看看這幾個參數的意思
3、使用 redis
通過上面的步驟,我們已經在 Docker 中啟動了 Redis 服務,下面我們就來通過 redis-cli 訪問一下,使用下面這條命令就可以啟動 redis-cli
docker exec -it dockerRedis redis-cli
其中 dockerRedis 是你啟動 Redis 容器名稱,不出意外的話,你可以啟動一個 redis-cli 客戶端,如下圖所示:
docker redis-cli 客戶端
上面就是使用 Docker 簡單的啟動 Redis ,整體來說比 linux 上面安裝啟動要方便不少,主要是你可以在 windows 系統上運行,雖然最終它還是運行在 linux 上面的,但是這個過程我們是無感知的。你可以能會問:我想在啟動的時候知道 redis.conf 可行不?答案是可行的,但是如果你對 Docker 不了解的話,可能會遇到一些坑,我就遇到了,因為我對 Docker 不是太了解,平時使用 docker 都是只需要傳入參數就好了,沒有傳過文件。關於啟動時指定配置文件,在 redis 鏡像那裡有說明,但是是 linux 下面的,並不是 windows 系統下的 Docker 配置方式,所以我就百度到了下面這段命令
docker run -v /d:/dockerdata/redis/config/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf
這段命令就是一個坑,壓根就沒有,啟動這條命令,你將得到如下反饋:
顯然這條命令是沒有用的,當然這只是我個人認為,也許是我操作失誤,也許是我知識面不夠,如果朋友們發現錯誤還請多多指教,這裡我就先當它是錯誤的,正確的做法是在 Docker 的宿主機上存放 redis.conf 文件,顯然 Docker 的宿主機並不是 windows 系統,而是啟動在 windows 系統上的虛擬機,所以我們需要進入到虛擬機裡面,Docker Quickstart Terminal啟動默認介面並沒有正真的登錄到虛擬機,所以我們需要更改登錄方式,使用 docker-machine ssh 命令,如下圖所示:
Docker Quickstart Terminal 啟動方式
這樣我們就進入到了真正的虛擬機裡面,我們就在一台虛擬機上操作了,跟我們在 linux 上的安裝一樣,我們先建立兩個目錄用來存放 Redis 配置:
/usr/local/redis:存放redis.conf /usr/local/redis/data :存放持久化文件
建立好兩個目錄後, 我們把 redis.conf 放在 /usr/local/redis 目錄下,使用下面這條 Docker 命令啟動 Redis 鏡像:
docker run -p 6379:6379 -v /usr/local/redis/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/redis/data:/data --name dockerRedis -d redis redis-server /usr/local/etc/redis/redis.conf
這條 docker 啟動命令跟上面的有一點區別,有兩個參數我在這裡說明一下:
到此,Docker 安裝 Redis 的複雜操作也做完了,如果沒什麼特別要求的話,使用簡單的 docker 啟動就好了,簡單方便,完全夠用了。