redis 安裝

楊高超發表於2017-12-30

前言

最近在工作中較多用到了 redis 伺服器。按照官方的說明, redis 是一個開源的基於記憶體資料結構的快取資料庫,還可以用作訊息佇列。它支援的資料結構包括字串、Hash、Set、List、點陣圖、地理座標和日誌型資料。支援資料的持久化,並且通過 redis 叢集的自動分割槽提供 redis 服務的高可用性。

目前,在我的實際使用中,主要用 redis 來作為快取伺服器、分散式鎖服務、全域性的唯一標識生成器。實驗性質的用來做 LBS 服務和訊息佇列服務。

為了使用 redis ,我們首先要安裝一個 redis 伺服器。安裝一個單機版的 redis 非常簡單,按照以下幾個步驟操作即可。這裡的安裝環境是 centos6.5 linux。

安裝依賴環境

redis 安裝需要使用 c 編譯器,所以之前先通過下面的命令安裝 c 和 c++ 編譯器。

sudo yum install -y gcc* g++*
複製程式碼

下載安裝

wget http://download.redis.io/releases/rdis-4.0.6.tar.gz
tar -xvf redis-4.0.6.tar.gz
cd redis-4.0.6
make
複製程式碼

整理可執行檔案

mkdir bin
cp src/mkreleasehdr.sh bin/
cp src/redis-benchmark bin/
cp src/redis-checbiak-aof bin/
cp src/redis-check-rdb bin/
cp src/redis-cli bin/
cp src/redis-sentinel bin/
cp src/redis-server bin/
cp src/redis-trib.rb bin/
複製程式碼

配置 redis

通過文字編輯器編輯配置檔案

vi redis.conf
複製程式碼

在配置檔案中找到下面的三行

#bind 127.0.0.1
port 52981
requirepass hhSbcpotThgWdnxJNhrzwstSP20DvYOldkjf
複製程式碼

將第一行註釋掉。這將允許通過網路遠端連線 redis 伺服器,否則將只能在本機通過本地地址連線。

第二行用來配置 redis 伺服器提供網路服務的埠號,預設是6379,我們可以修改為一個不常用的,提高伺服器的安全性。將第三行的註釋去掉,這將要求連線 redis 伺服器的時候要提供密碼。因為 redis 能夠在很短的時間類嘗試大量的密碼,所以這個密碼必須設定足夠的強度。這裡我採用了 32 位大小寫字母和數字混合的密碼。

在舊版的 redis 中,允許不設定密碼的遠端連線。這個導致了著名的 redis 攻擊事件。大量暴露在公網上的 redis 伺服器沒有設定連線密碼,導致這些 redis 伺服器中的資料洩露和被篡改。所以新版的 redis 如果不設定密碼,將不允許通過網路遠端連線。

配置環境變數

為了能夠在任何地方使用 redis 的命令,需要將 redis 安裝目錄下的 bin 目錄設定到 PATH 環境變數中。

vi ~/.bash_profile
複製程式碼

在最後增加如下的內容

#/usr/local/redis-4.0.6 is redis install path
REDIS_HOME=/usr/local/redis-4.0.6
export REDIS_HOME
PATH=$REDIS_HOME/bin:$PATH
export PATH
複製程式碼

執行下面的命令讓設定立即生效

source ~/.bash_profile
複製程式碼

啟動 redis 伺服器

nohup redis-server $REDIS_HOME/redis.conf &
複製程式碼

命令列連線 redis 伺服器

redis-cli -a hhSbcpotThgWdnxJNhrzwstSP20DvYOldkjf -p 52981
複製程式碼

其中 -a 引數指定連線 redis 伺服器的密碼, -p 引數指定連線 redis 伺服器的埠 redis 伺服器操作

redis 操作

下面演示連線上 redis 伺服器後,在 redis shell 中執行基本的 redis 命令的過程

127.0.0.1:52981> set name ygc
OK
127.0.0.1:52981> get name
"ygc"
127.0.0.1:52981> ttl name
(integer) -1
127.0.0.1:52981> expire name 300
(integer) 1
127.0.0.1:52981> ttl name
(integer) 297
127.0.0.1:52981>
複製程式碼
  • set name ygc 命令在 redis 伺服器中儲存一個 key 為 name 值為 ygc 的字串;
  • get name 命令從 redis 伺服器中獲取一個 key 為 name 物件的值,結果是 ygc;
  • ttl name 命令從 redis 伺服器中獲取一個 key 為 name 物件的過期時間,結果是-1,表示永不過期;
  • expire name 300 命令將 redis 伺服器中 key 為 name 物件的過期時間設定為 300 秒;

現在,redis 單機伺服器就已經搭建好了。我們就可以愉快的和 redis 一起玩耍了。如果需要了解redis 支援的全部命令,請移步 redis 官方文件介紹的 redis command

相關文章