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 的安裝方式吧。linux
在 redis 官網中有安裝教程,連接:https://redis.io/download
,安裝步驟我拷貝過來了,步驟以下:git
$ 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 可能會報如下錯誤github
jemalloc/jemalloc.h: No such file or directoryredis
當時沒有截取詳細的錯誤信息,只把主要的一段截取出來了,這個錯誤的緣由是咱們上一次 make 報錯以後,有編譯後的文件,因此咱們須要清除上一次的殘留文件再從新編譯,將 make 換成 make distclean && make 就能夠了。docker
redis.conf 是 Redis 的配置文件,redis 的全部配置有在這個文件裏面,這個文件挺大的有接近 1400 行,有關 redis 的操做、使用說明都在裏面,能夠詳細的閱讀閱讀這個配置文件,大部分狀況下咱們使用默認配置就行,只須要設置少許配置就行。redis.conf 的存放位置在 Redis 的安裝目錄下,我這裏是 /usr/local/redis-5.0.5 目錄下,一塊兒來看看咱們可能會修改的幾個配置:shell
好像大概設置這幾個就行了,更多關於 redis.conf 的配置,你能夠詳細閱讀 redis.conf 配置文件或者查閱相關手冊。數據庫
Redis 的啓動很是簡單,Redis 安裝完成以後,會在 /usr/local/redis-5.0.5/src 存放 Redis 的 shell 交互命令,其中有一個 redis-server ,這個就是 Redis 的啓動命令,執行:vim
./redis-server /usr/local/redis-5.0.5/redis.confwindows
後面跟的是 redis.conf 的文件路徑,不出意外的話咱們將啓動成功,你會看到以下界面:緩存
這裏咱們使用的是守護進程的方式啓動,因此不會出現帶有 redis logo 的啓動界面,咱們可使用 shell 命令登陸到 Redis 中,仍是在 src 目錄下面,執行下面這條命令:
./redis-cli
這命令你就進入了 shell 交互界面,./redis-cli 命令能夠帶一些參數,例如 -h IP 這個就能夠進入指定機器的 Redis 實例,進入以後你就能夠進行一些操做了,以下圖所示:
Redis 的關閉方式有兩種,一種是在 shell 交互界面關閉,另外一種是 kill + 進程號關閉 Redis 實例的方式
shutdown [nosave|save]
在 shell 交互界面輸入 shutdown 命令就能夠關閉 Redis 實例,後面有一個可選參數,nosave 就是不將內存中的數據持久化,save 就是將內存中的數據持久化。shutdown 關閉方式是比較優雅的關閉方式,建議使用這種關閉方式
使用 ps -ef|grep 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 設置爲開機自啓動,其實這個也很是簡單,咱們只須要作如下四步操做便可。
#!/bin/sh # # Simple Redis init.d script conceived to work on Linux systems # as it does use of the /proc filesystem. #chkconfig: 2345 80 90 #description:auto_run # 端口號 REDISPORT=6379 # 啓動命令 EXEC=/usr/local/redis-5.0.5/src/redis-server # shell 交付命令 CLIEXEC=/usr/local/redis-5.0.5/src/redis-cli # pid 存放位置 PIDFILE=/var/run/redis_${REDISPORT}.pid # redis 配置文件 CONF="/usr/local/redis-5.0.5/redis.conf" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi ;; stop) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Stopping ..." $CLIEXEC -p $REDISPORT shutdown while [ -x /proc/${PID} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis stopped" fi ;; *) echo "Please use start or stop as first argument" ;; esac
################################# GENERAL ##################################### # By default Redis does not run as a daemon. Use 'yes' if you need it. # Note that Redis will write a pid file in /var/run/redis.pid when daemonized. daemonize yes
chmod +x /etc/init.d/redis
# 啓動 redis service redis start # 中止 redis service redis stop # 開啓服務自啓動 chkconfig redis on
Docker 安裝 Redis 總體來講比較方便,我說的是非生產環境,就是本身搭着測試或者學習的環境,下面的步驟所有創建在你已經在你的電腦上安裝了 Docker 的基礎上,下面就來開啓安裝之旅。
docker pull redis
docker run -p 6379:6379 --name myredis -d redis redis-server --appendonly yes
這種方式啓動使用的默認的 redis.conf 配置,咱們先來看看這幾個參數的意思
經過上面的步驟,咱們已經在 Docker 中啓動了 Redis 服務,下面咱們就來經過 redis-cli 訪問一下,使用下面這條命令就能夠啓動 redis-cli
docker exec -it dockerRedis redis-cli
其中 dockerRedis 是你啓動 Redis 容器名稱,不出意外的話,你能夠啓動一個 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
命令,以下圖所示:
這樣咱們就進入到了真正的虛擬機裏面,咱們就在一臺虛擬機上操做了,跟咱們在 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 啓動就行了,簡單方便,徹底夠用了。
目前互聯網上不少大佬都有 Redis 系列教程,若有雷同,請多多包涵了。原創不易,碼字不易,還但願你們多多支持。若文中有所錯誤之處,還望提出,謝謝。
歡迎掃碼關注微信公衆號:「平頭哥的技術博文」,和平頭哥一塊兒學習,一塊兒進步。