redis的介紹及安裝
阿新 • • 發佈:2018-12-26
Redis
1.瞭解redis
redis是一款記憶體快取記憶體資料庫(磁碟IO—>記憶體)
Redis 是完全開源免費的,遵守BSD協議,是一個高效能的key-value資料庫。
Redis 與其他 key - value 快取產品有以下三個特點:
1,Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。
2,Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
3,Redis支援資料的備份,即master-slave模式的資料備份。
2.Redis 優勢
效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
豐富的資料型別 – Redis支援二進位制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。
原子 – Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。單個操作是原子性的。多個操作也支援事務,即原子性,通過MULTI和EXEC指令包起來。
豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。
3.Redis與其他key-value儲存有什麼不同?
Redis有著更為複雜的資料結構並且提供對他們的原子性操作,這是一個不同於其他資料庫的進化路徑。Redis的資料型別都是基於基本資料結構的同時對程式設計師透明,無需進行額外的抽象。 Redis執行在記憶體中但是可以持久化到磁碟,所以在對不同資料集進行高速讀寫時需要權衡記憶體,因為資料量不能大於硬體記憶體。在記憶體資料庫方面的另一個優點是,相比在磁碟上相同的複雜的資料結構,在記憶體中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。同時,在磁碟格式方面他們是緊湊的以追加的方式產生的,因為他們並不需要進行隨機訪問。 Redis單個檔案的最大值時512M,memcache value最大值時1M。
4.Redis適用場景
快取分類:頁面快取(smart)、資料快取
頁面快取經常用到cms記憶體管理系統中
資料快取經常用到頁面的具體資料中
在開發過程中,頁面的一些資料經常會被用到,並切短時間裡不會發生變化,為了提高請求速度,降低網站負載,
就把這些資料放到讀取速度更高的介質上(或者通過更少的計算就可以得到資料),該行為就稱為對資料的快取。
該介質可以是檔案、資料庫、記憶體(經常用於資料快取)
限時的優惠活動資訊(秒殺、推薦、商品列表)
網站資料快取(對於一些需要定時更新的資料,例如:積分排行榜)
mac下redis的安裝
1. 官網http://redis.io/ 下載最新的穩定版本,這裡是3.2.0 2. sudo mv 到 /usr/local/ 3. sudo tar -zxf redis-3.2.0.tar 解壓檔案 4. 進入解壓後的目錄 cd redis-3.2.0 5. sudo make test 測試編譯 6. sudo make install make完後 redis-2.8.17目錄下會出現編譯後的redis服務程式redis-server, 還有用於測試的客戶端程式redis-cli,兩個程式位於安裝目錄 src 目錄下: 下面啟動redis服務. $ cd src $ ./redis-server 注意這種方式啟動redis 使用的是預設配置。也可以通過啟動引數告訴redis使用指定配置檔案使用下面命令啟動。 $ cd src $ ./redis-server redis.conf redis.conf是一個預設的配置檔案。我們可以根據需要使用自己的配置檔案。 檢視 redis 是否啟動? $ redis-cli 以上命令將開啟以下終端: redis 127.0.0.1:6379> 127.0.0.1 是本機 IP ,6379 是 redis 服務埠。現在我們輸入 PING 命令。 redis 127.0.0.1:6379> ping PONG 以上說明我們已經成功安裝了redis。 啟動redis服務程序後,就可以使用測試客戶端程式redis-cli和redis服務互動了。 比如: $ cd src $ ./redis-cli redis> set foo bar OK redis> get foo "bar"
Windows下安裝Redis服務
Redis是有名的NoSql資料庫,一般Linux都會預設支援。但在Windows環境中,可能需要手動安裝設定才能有效使用。這裡就簡單介紹一下Windows下Redis服務的安裝方法,希望能夠幫到你。
1、要安裝Redis,首先要獲取安裝包。Windows的Redis安裝包需要到以下GitHub連結找到。連結:https://github.com/MSOpenTech/redis。開啟網站後,找到Release,點選前往下載頁面。
2、在下載網頁中,找到最後發行的版本(此處是3.2.100)。找到Redis-x64-3.2.100.msi和Redis-x64-3.2.100.zip,點選下載。這裡說明一下,第一個是msi微軟格式的安裝包,第二個是壓縮包。
3、雙擊剛下載好的msi格式的安裝包(Redis-x64-3.2.100.msi)開始安裝。
4、選擇“同意協議”,點選下一步繼續。
5、選擇“新增Redis目錄到環境變數PATH中”,這樣方便系統自動識別Redis執行檔案在哪裡。
6、埠號可保持預設的6379,並選擇防火牆例外,從而保證外部可以正常訪問Redis服務。
7、設定最大值為100M。作為實驗和學習,100M足夠了。
8、點選安裝後,正式的安裝過程開始。稍等一會即可完成。
9、安裝完畢後,需要先做一些設定工作,以便服務啟動後能正常執行。使用文字編輯器,這裡使用Notepad++,開啟Redis服務配置檔案。注意:不要找錯了,通常為redis.windows-service.conf,而不是redis.windows.conf。後者是以非系統服務方式啟動程式使用的配置檔案。
10、找到含有requirepass字樣的地方,追加一行,輸入requirepass 123456。這是訪問Redis時所需的密碼,一般測試情況下可以不用設定密碼。不過,即使是作為本地訪問,也建議設定一個密碼。此處以簡單的123456來演示。
11、點選“開始”>右擊“計算機”>選擇“管理”。在左側欄中依次找到並點選“計算機管理(本地)”>服務和應用程式>服務。再在右側找到Redis名稱的服務,檢視啟動情況。如未啟動,則手動啟動之。正常情況下,服務應該正常啟動並運行了。
12、最後來測試一下Redis是否正常提供服務。進入Redis的目錄,cd C:\Program Files\Redis。輸入redis-cli並回車。(redis-cli是客戶端程式)如圖正常提示進入,並顯示正確埠號,則表示服務已經啟動。
13、使用服務前需要先通過密碼驗證。輸入“auth 123456”並回車(123456是之前設定的密碼)。返回提示OK表示驗證通過。
14、實際測試一下讀寫。輸入set mykey1 "I love you all!”並回車,用來儲存一個鍵值。再輸入get mykey1,獲取剛才儲存的鍵值。
15、注意事項
1.Windows使用的這個Redis是64位版本的,32位作業系統的同學就不要折騰了。
2.作為服務執行的Redis配置檔案,通常為redis.windows-service.conf,而不是redis.windows.conf。小心不要選錯了。
[壓縮包安裝](http://www.runoob.com/redis/redis-install.html)
redis配置檔案
src目錄下相關檔案
redis-cli 終端操作指令碼
redis-server 啟動redis服務指令碼檔案
redis-benchmark 壓力測試檔案
redis-check-aof 檢測備份檔案指令碼
redis-check-dump 檢測備份檔案指令碼
編輯配置,可以通過修改 redis.conf 檔案或使用 CONFIG set 命令來修改配置。
redis.conf 配置項說明如下:
1. Redis預設不是以守護程序的方式執行,可以通過該配置項修改,使用yes啟用守護程序
daemonize no
2. 當Redis以守護程序方式執行時,Redis預設會把pid寫入/var/run/redis.pid檔案,可以通過pidfile指定
pidfile /var/run/redis.pid
3. 指定Redis監聽埠,預設埠為6379,作者在自己的一篇博文中解釋了為什麼選用6379作為預設埠,因為6379在手機按鍵上MERZ對應的號碼,而MERZ取自義大利歌女Alessia Merz的名字
port 6379
4. 繫結的主機地址
bind 127.0.0.1
5.當 客戶端閒置多長時間後關閉連線,如果指定為0,表示關閉該功能
timeout 300
6. 指定日誌記錄級別,Redis總共支援四個級別:debug、verbose、notice、warning,預設為verbose
loglevel verbose
7. 日誌記錄方式,預設為標準輸出,如果配置Redis為守護程序方式執行,而這裡又配置為日誌記錄方式為標準輸出,則日誌將會發送給/dev/null
logfile stdout
8. 設定資料庫的數量,預設資料庫為0,可以使用SELECT <dbid>命令在連線上指定資料庫id
databases 16
9. 指定在多長時間內,有多少次更新操作,就將資料同步到資料檔案,可以多個條件配合
save <seconds> <changes>
Redis預設配置檔案中提供了三個條件:
save 900 1
save 300 10
save 60 10000
分別表示900秒(15分鐘)內有1個更改,300秒(5分鐘)內有10個更改以及60秒內有10000個更改。
10. 指定儲存至本地資料庫時是否壓縮資料,預設為yes,Redis採用LZF壓縮,如果為了節省CPU時間,可以關閉該選項,但會導致資料庫檔案變的巨大
rdbcompression yes
11. 指定本地資料庫檔名,預設值為dump.rdb
dbfilename dump.rdb
12. 指定本地資料庫存放目錄
dir ./
13. 設定當本機為slav服務時,設定master服務的IP地址及埠,在Redis啟動時,它會自動從master進行資料同步
slaveof <masterip> <masterport>
14. 當master服務設定了密碼保護時,slav服務連線master的密碼
masterauth <master-password>
15. 設定Redis連線密碼,如果配置了連線密碼,客戶端在連線Redis時需要通過AUTH <password>命令提供密碼,預設關閉
requirepass foobared
16. 設定同一時間最大客戶端連線數,預設無限制,Redis可以同時開啟的客戶端連線數為Redis程序可以開啟的最大檔案描述符數,如果設定 maxclients 0,表示不作限制。當客戶端連線數到達限制時,Redis會關閉新的連線並向客戶端返回max number of clients reached錯誤資訊
maxclients 128
17. 指定Redis最大記憶體限制,Redis在啟動時會把資料載入到記憶體中,達到最大記憶體後,Redis會先嚐試清除已到期或即將到期的Key,當此方法處理 後,仍然到達最大記憶體設定,將無法再進行寫入操作,但仍然可以進行讀取操作。Redis新的vm機制,會把Key存放記憶體,Value會存放在swap區
maxmemory <bytes>
18. 指定是否在每次更新操作後進行日誌記錄,Redis在預設情況下是非同步的把資料寫入磁碟,如果不開啟,可能會在斷電時導致一段時間內的資料丟失。因為 redis本身同步資料檔案是按上面save條件來同步的,所以有的資料會在一段時間內只存在於記憶體中。預設為no
appendonly no
19. 指定更新日誌檔名,預設為appendonly.aof
appendfilename appendonly.aof
20. 指定更新日誌條件,共有3個可選值:
no:表示等作業系統進行資料快取同步到磁碟(快)
always:表示每次更新操作後手動呼叫fsync()將資料寫到磁碟(慢,安全)
everysec:表示每秒同步一次(折衷,預設值)
appendfsync everysec
21. 指定是否啟用虛擬記憶體機制,預設值為no,簡單的介紹一下,VM機制將資料分頁存放,由Redis將訪問量較少的頁即冷資料swap到磁碟上,訪問多的頁面由磁碟自動換出到記憶體中(在後面的文章我會仔細分析Redis的VM機制)
vm-enabled no
22. 虛擬記憶體檔案路徑,預設值為/tmp/redis.swap,不可多個Redis例項共享
vm-swap-file /tmp/redis.swap
23. 將所有大於vm-max-memory的資料存入虛擬記憶體,無論vm-max-memory設定多小,所有索引資料都是記憶體儲存的(Redis的索引資料 就是keys),也就是說,當vm-max-memory設定為0的時候,其實是所有value都存在於磁碟。預設值為0
vm-max-memory 0
24. Redis swap檔案分成了很多的page,一個物件可以儲存在多個page上面,但一個page上不能被多個物件共享,vm-page-size是要根據儲存的 資料大小來設定的,作者建議如果儲存很多小物件,page大小最好設定為32或者64bytes;如果儲存很大大物件,則可以使用更大的page,如果不 確定,就使用預設值
vm-page-size 32
25. 設定swap檔案中的page數量,由於頁表(一種表示頁面空閒或使用的bitmap)是在放在記憶體中的,,在磁碟上每8個pages將消耗1byte的記憶體。
vm-pages 134217728
26. 設定訪問swap檔案的執行緒數,最好不要超過機器的核數,如果設定為0,那麼所有對swap檔案的操作都是序列的,可能會造成比較長時間的延遲。預設值為4
vm-max-threads 4
27. 設定在向客戶端應答時,是否把較小的包合併為一個包傳送,預設為開啟
glueoutputbuf yes
28. 指定在超過一定的數量或者最大的元素超過某一臨界值時,採用一種特殊的雜湊演算法
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
29. 指定是否啟用重置雜湊,預設為開啟(後面在介紹Redis的雜湊演算法時具體介紹)
activerehashing yes
30. 指定包含其它的配置檔案,可以在同一主機上多個Redis例項之間使用同一份配置檔案,而同時各個例項又擁有自己的特定配置檔案
include /path/to/local.conf