天天看點

Redis初步了解

REmote DIctionary Server:資料結構伺服器,k/v,資料結構; Redis 是一個開源(BSD許可)的,記憶體存儲、資料結構存儲系統,它可以用作資料庫、緩存和消息中間件(消息隊列)。 它支援的資料結構:字元串、清單(數組)、hashes(關聯數組)、集合、有序集合、bitmaps、hyperloglogs、空間索引; 内建的複制功能、Lua scripting(著名的腳本程式設計語言,容易内嵌入其他語言)、LRU、事務、持久存儲、高可用(Sentinel,Redis Cluster)
最新版程式,可以選擇官網下載下傳,編譯安裝。 也可以使用yum epel倉庫,<code>yum install redis</code> 配置檔案:/etc/redis.conf 服務端-主程式:/usr/bin/redis-server 預設端口 TCP:6379 用戶端:/usr/bin/redis-cli Unit File:/usr/lib/systemd/system/redis.service 資料目錄:/var/lib/redis Redis性能測試工具:redis-benchmark AOF檔案修複工具:redis-check-aof RDB檔案檢查工具:redis-check-rdb Sentinel伺服器:redis-sentinel
Redis.conf 配置檔案分為:通用基本配置項、網絡配置項、持久化相關配置、複制相關的配置、安全相關配置、Limit相關的配置、SlowLog相關的配置、INCLUDES、Advanced配置

通用配置

daemonize yes 啟用背景守護程序運作模式

pidfile /PATH/redis.pid redis啟動後的程序ID儲存檔案

loglevel notice 指定記錄伺服器資訊等級

logfile “” 指定日志檔案,預設是使用系統的标準輸出

databases 16 設定資料庫的數量,預設啟動時使用0 号資料庫

網絡配置

port 指定使用端口号,預設6379

bind 0.0.0.0 監聽指定IP位址 預設本地回環位址

timeout N 用戶端空閑N秒後斷開連接配接,參數0表示不啟用

tcp-backlog 511 後援隊列,達到最大并發連接配接數後,伺服器還要留住多少通路請求

protected-mode yes 保護模式,預設啟用。指定了bind,就可以關閉保護模式。如果關閉bind,就必須啟用保護模式,不然沒法登陸redis。

tcp-keepalive 300 tcp保持連接配接300秒

安全配置

requirepass PASSWORD

rename-command &lt;COMMAND&gt; &lt;NEW_CMND_NAME&gt; 指令重命名,在AOF或Replication環境中,不推薦使用;

Limits

maxmemory &lt;bytes&gt; 設定給redis使用的最大記憶體,機關為位元組

maxmemory-policy noeviction 選擇淘汰政策

如果記憶體使用量耗盡,淘汰政策:

maxmemory-samples 5 淘汰算法運作時的采樣樣本數

SlowLog相關配置

slowlog-log-slower-than 10000 機關微秒=0.01秒

sowlog-max-len 128 最終隻儲存128條日志;

ADVANCED配置

hash-max-ziplist-entries 512 哈希編碼最大鍵值對 512個鍵值對

hash-max-ziplist-value 64 這些鍵值對裡的值,最大長度64位元組。

client-output-buffer-limit &lt;class&gt;&lt;hard limit&gt;&lt;soft limit&gt;&lt;soft seconds&gt;

class:用戶端種類,normal本機用戶端,slave從節點用戶端,pubsub消息隊列用戶端。

hard limit 硬限制,最大多少空間。

soft limit 軟限制,可以在短時間内超過。

soft seconds 超出軟限制時,超出的那部分可使用時長。

@strings 隻處理值為字元串的指令組

SET:設定一個key的value值

GET:傳回key的value值,key不存在則傳回nil(空);

EXISTS:查詢key是否存在;傳回1 key存在,0 key不存在

INCR:對key中的數值執行加1操作。

DECR:傳回一個數字,減少之後的value值

SETNX:當key不存在是,設定一個鍵的值,當key存在時,則不做動作。

SETEX:設定 key 對應的 value 的過期時間

INCRBYFLOAT:指定key為浮點數值,并增長浮點數值

MGET:擷取多個key的值

MSET:設定多個key的值

@lists 處理清單的指令組

LPUSH:從清單左邊開始插入元素

RPUSH:從清單右邊開始插入元素

LPOP:從左邊彈出元素

RPOP:從右邊彈出元素

LPUSHX:判斷清單是否存在,存在則從左邊插入元素

RPUSHX:判斷清單是否存在,存在則從右邊插入元素

LRANGE:傳回指定下标的key的值

LINDEX:傳回數組清單中,指定的下标的元素值。0為第一個元素

LSET:設定清單裡一個元素的值

Server相關指令

CLIENT GETNAME:擷取用戶端連接配接的名字

CLIENT SETNAME:設定用戶端連接配接的名字

CLIENT LIST:列出所有用戶端連接配接

CLIENT KILL:關閉指定連接配接,根據這些條件關閉;[ip:port] [ID client-id] [TYPE normal|master|slave|pubsub] [ADDR ip:port] [SKIPME yes/no]

CLIENT PAUSE:暫停某個用戶端連接配接,也可以設着暫停時間

SHUTDOWN NOSAVE強制關閉,類似直接關電源;SAVE記憶體資料同步到磁盤上,安全關閉

INFO:伺服器狀态資訊檢視;分為多個secion;

在程式中修改參數

CONFIG GET 檢視指定配置項的參數

CONFIG RESETSTAT INFO中的計數器全部重置,重新開始計數

CONFIG REWRITE 重寫配置檔案,儲存在配置檔案中

CONFIG SET 修改配置項參數;重新開機redis,不儲存

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]

與Connection相關指令:

清空資料庫:

RDB

snapshotting, 二進制格式;按事先定制的政策,周期性地将資料從記憶體同步至磁盤;資料檔案預設為dump.rdb;

用戶端顯式使用SAVE或BGSAVE指令來手動啟動快照儲存機制;

SAVE:同步,即在主線程中儲存快照,此時會阻塞所有用戶端請求;

BGSAVE:異步;backgroud

RDB相關的snapshotting配置:

*save &lt;seconds&gt; &lt;changes&gt;

save 900 1

save 300 10

save 60 10000

save 5 200000

表示:三個政策滿足其中任意一個均會觸發SNAPSHOTTING操作;

900s内至少有一個key有變化

300s内至少有10個key有變化

60s内至少有1W個key發生變化

5s内至少變化20W個key發生變化

stop-writes-on-bgsave-error yes

dump快照操作出現錯誤時,是否禁止新的寫入操作請求;

rdbcompression yes 是否對快照進行壓縮,隻要伺服器有閑餘性能,就可以壓縮,節省磁盤空間

rdbchecksum yes 壓縮完是否校驗,檢查檔案是否完整;占用CPU

dbfilename dump.rdb:指定rdb檔案名

*dir /var/lib/redis:rdb檔案的存儲路徑

AOF:Append Only File, fsync

記錄每次寫操作至指定的檔案尾部實作的持久化;當redis重新開機時,可通過重新執行檔案中的指令在記憶體中重建出資料庫;

BGREWRITEAOF:AOF檔案重寫;

不會讀取正在使用AOF檔案,而是通過将記憶體中的資料以指令的方式儲存至臨時檔案中,完成之後替換原來的AOF檔案;

AOF相關的配置

*appendonly no:預設不啟用AOF的

appendfilename "appendonly.aof" :檔案名

*appendfsync:追加同步的三種模式

no:redis不執行主動同步操作,而是OS進行;

everysec:每秒一次;

always:每語句一次;

no-appendfsync-on-rewrite no

是否在背景執行aof重寫期間不調用fsync,預設為no,表示調用;

auto-aof-rewrite-percentage 100:變化的内容所占空間的增長量超過100%

auto-aof-rewrite-min-size 64mb 增長量不能超過64mb

上述兩個條件同時滿足時,方會觸發重寫AOF;與上次aof檔案大小相比,其增長量超過100%,且大小不少于64MB;

aof-load-truncated yes:修剪檔案,Redis啟動加載aof檔案,如果發現末尾指令不完整則自動截掉,成功加載前面正确的資料。如果設定為no,遇到此類情況,Redis啟動失敗,用redis-check-aof 工具手工修複。

注意:持久機制本身不能取代備份;應該制訂備份政策,對redis庫定期備份;

RDB與AOF同時啟用:

(1) BGSAVE和BGREWRITEAOF不會同時進行;

(2) Redis伺服器啟動時用持久化的資料檔案恢複資料,會優先使用AOF;

繼續閱讀