安裝配置Redis
Redis官網:https://redis.io
Redis是完全開源免費的,遵守BSD協議.
Redis是一個高效能的key-value
資料庫.
Redis具有以下特點
- 支援資料持久化,可將記憶體中的資料儲存至磁碟,重啟後可以再次載入進行使用.
- 支援五種資料型別.
- 支援資料庫備份.
Redis的優勢
- 效能極高,讀110000次/s,寫81000次/s.
- 豐富的資料型別,String、Lists、Hashes、Sets以及Ordered Sets.
- 所有操作都是原子性的,意思是要麼成功執行要麼完全失敗不執行,多個操作支援事物,即MULTI和EXEC指令包起來.
- 豐富的特性,支援publish/subscribe、通知、key過期等特性.
Redis資料型別
·
1.String 字串
redis的string可以包含任何資料型別,包括圖片以及序列化的物件.
一個鍵最大能儲存512MB.
·
2.Hash 雜湊
redis的hash是一個string型別的key和value對映表.
hash特別適合儲存物件,類比Python中的字典.
·
3.List 列表
redis的list是簡單的字串列表,按照插入順序排序.
可以從兩端進行新增,類似於雙向連結串列,還可以進行阻塞.
·
4.Set 集合
redis的set是字串型別的集合,無序且不重複.
集合是通過雜湊表實現的,所以增刪查的時間複雜度都是O(1).
·
5.Zset 有序集合
redis的zset和set基本一樣,不同的是zset每個元素都會關聯一個double型別的分數.
redis正是通過對這個分數的排序來實現集合的有序儲存.
安裝
進入官網,下載Redis:
下載完成後,按如下步驟安裝
·
1.進入redis所在資料夾,輸入命令將其解壓到/usr/local
目錄下:tar zxf redis-5.0.2.tar.gz -C /usr/local
·
2.進入解壓後的資料夾,開始編譯安裝:make && sudo make install
·
3.啟動redis:redis-server &
關閉Redis
redis-cli shutdown
如果無法正常關閉,可使用
kill
命令:# 獲取最後一次啟動的redis例項的PID redisPID=`ps -ef | grep redis | awk 'NR==1{print $2}'` # 殺死redis程序,-9表示強制 kill -9 $redisPID
配置
1.安裝完畢後,在redis目錄下新建3個資料夾:
mkdir bin etc db
·
2. 把/usr/local/redis/src目錄下的如下4個檔案cp到/usr/local/redis/bin目錄下:cd /usr/local/redis/src # -p表示複製許可權 cp -p mkreleasehdr.sh redis-benchmark redis-check-rdb redis-cli redis-server ../bin/
·
3. 將/usr/local/redis目錄下的redis.conf
檔案拷貝到/usr/local/redis/etc目錄下:cd /usr/local/redis cp -p redis.conf etc/
·
4.如下,修改配置檔案/usr/local/redis/etc/redis.conf:vim /usr/local/redis/etc/redis.conf
關於
vim
編輯器的用法,百度一下.
也可通過redis-cli
命令進入互動模式進行配置,詳見文章結尾.
配置檔案 redis.conf
·
修改為守護模式
daemonize yes
·
設定程序鎖檔案
pidfile /usr/local/redis/redis.pid
·
指定埠
port 6379
·
修改可連線的網斷
bind 127.0.0.1
·
修改客戶端超時時間
timeout 300
·
修改日誌級別
loglevel debug
·
指定日誌檔案位置
logfile /usr/local/redis/log-redis.log
·
設定資料庫的數量,可以使用SELECT 命令在連線上指定資料庫id
databases 16
·
指定本地資料庫檔名
dbfilename dump.rdb
·
指定本地資料庫路徑
dir /usr/local/redis/db/
指定儲存至本地資料庫時是否壓縮資料
rdbcompression yes
·
預設為yes,redis採用LZF壓縮
如果為了節省CPU時間,可以註釋掉該選項,但會導致資料庫檔案變的巨大
指定在多長時間內,有多少次更新操作才將資料同步到資料檔案
redis預設提供了3個條件:
save 900 1
save 300 10
save 60 10000
·
還可以多個條件配合
save < seconds> <changes>
指定是否在每次更新操作後進行日誌記錄
appendonly no
·
redis在預設情況下是非同步的把資料寫入磁碟,如果不開啟,可能會在斷電時導致一段時間內的資料丟失
因為 redis本身同步資料檔案是按上面的save條件來同步的,所以有的資料會在一段時間內只存在於記憶體中
指定更新日誌條件,
appendfsync everyses
·
此配置有3個可選值:
no
:等待作業系統進行資料快取同步到磁碟(快)
always
:每次更新操作後手動呼叫fsync()將資料寫到磁碟(慢,安全)
everysec
:每秒同步一次(折衷,預設值)
最後,啟動服務:
redis-server /usr/local/redis/etc/redis.conf
·
進入互動模式:# -h:指定redis主機IP -p:指定服務埠 redis-cli -h 127.0.0.1 -p 6379
·
互動模式中的操作:# 獲取所有配置項 reids 127.0.0.1:6379> config get * # 獲取單個配置項:config get 配置名 redis 127.0.0.1:6379> config get loglevel # 編輯配置:config set 配置名 "新的引數" redis 127.0.0.1:6379> config set loglevel "debug"