redis安全及必備知識

redis安全及必備知識

一.redis安全

爲redis設置密碼命令行的模式(重啓後失效): 
查看密碼:java

CONFIG GET requirepasspython

密碼認證:redis

AUTH password數據庫

設置密碼:c#

CONFIG SET requirepass "password"緩存

127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> CONFIG SET requirepass "abc123"
OK
127.0.0.1:6379> CONFIG GET requirepass
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH "abc123"
OK
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) "abc123"

在redis配置文件中設置密碼,在requirepass後面直接加密碼便可:安全

requirepass abc123456併發

在配置文件中指定不能使用的命令:app

rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command SHUTDOWN ""
rename-command KEYS ""
rename-command MONITOR ""

二.redis性能測試

所謂性能測試就是在大併發下看redis的響應速度。能夠經過redis-benchmark這個redis自帶的測試命令來測試。ide

# redis-benchmark -n 100000 -q
PING_INLINE: 62111.80 requests per second
PING_BULK: 50100.20 requests per second
SET: 68823.12 requests per second
GET: 69348.12 requests per second
INCR: 69979.01 requests per second
LPUSH: 67842.61 requests per second
RPUSH: 68965.52 requests per second
LPOP: 69589.42 requests per second
RPOP: 66889.63 requests per second
SADD: 65061.81 requests per second
HSET: 52938.06 requests per second
SPOP: 56401.58 requests per second
LPUSH (needed to benchmark LRANGE): 45167.12 requests per second
LRANGE_100 (first 100 elements): 63451.78 requests per second
LRANGE_300 (first 300 elements): 47938.64 requests per second
LRANGE_500 (first 450 elements): 67796.61 requests per second
LRANGE_600 (first 600 elements): 68352.70 requests per second
MSET (10 keys): 63131.31 requests per second
-h 指定主機名
-p 指定端口
-c 指定併發數
-n 指定請求數
-q 強制退出 redis。僅顯示 query/sec 值
-l 生產循環,永久執行測試

三. 持久化機制

redis是一個支持持久化的內存數據庫,也就是redis須要常常將內存中的數據庫同步到硬盤來保證持久化。 
redis支持兩種持久化方式:

RDB(snapshotting快照的方式(默認)) 
AOF(append-only file)的方式

RDB方式: 
RDB是默認的持久化方式,這種方式是將內存中的數據以快照的方式寫入二進制文件中(dump.rdb)。 
配置方式:

save 900 1 #900秒內若是超過1個key被修改,則發起快照保存 
save 300 10 #300秒內若是超過10個key被修改,則發起快照保存 
save 60 10000 #60秒內若是超過10000個key被修改,則發起快照保存

aof方式: 
快照是按照必定時間間隔或者規則來進行的,可是若是redis意外down掉,就會丟失最後一次快照的修改的數據。aof的方式具備更好的持久化性能。在使用aof時,redis會將每一個收到的寫命令都經過write函數追加到文件中,當redis重啓時會經過從新執行文件中保存的寫命令來內存中重建整個數據庫的內容。固然因爲os會在內核中緩存write作的修改,因此可能不是當即寫入磁盤上,這樣aof方式的持久化也仍是有可能會丟失部分修改。能夠經過配置文件告訴redis咱們想要經過fsync函數強制os寫入到磁盤的時機。 
配置方式:

appendonly yes  # 啓動aof持久化方式
appendfilename "appendonly.aof"  #指定aof文件名稱
# appendfsync always  # 收到寫命令就當即寫入磁盤最慢,可是保證徹底的持久化
appendfsync everysec  # 每秒鐘寫入磁盤一次,在性能和持久化方面作了很好的折中處理
# appendfsync no  # 徹底依賴os,性能最好持久化沒保證

四. redis事務

redis事務能夠一次執行多個命令。 
一個事務從開始到執行會經歷如下三個階段:

  • 開始事務(MULTI)

  • 命令入隊

  • 執行事務(EXEC)

    127.0.0.1:6379> MULTI
    OK
    127.0.0.1:6379> SET name "jack"
    QUEUED
    127.0.0.1:6379> GET name
    QUEUED
    127.0.0.1:6379> SADD tag "C++" "python" "java" "c#"
    QUEUED
    127.0.0.1:6379> SMEMBERS tag 
    QUEUED
    127.0.0.1:6379> EXEC
    1) OK
    2) "jack"
    3) (integer) 4
    4) 1) "java"
       2) "C++"
       3) "c#"
       4) "python"
DISCARD 取消事務,放棄執行事務內的全部命令
EXEC 執行全部事務塊的命令
MULTI 標記一個事務塊的開始
UNWATCH 取消WACTCH命令對全部key的監控
WATCH key [key ...] 監視一個(或多個) key ,若是在事務執行以前這個(或這些) key 被其餘命令所改動,那麼事務將被打斷。
相關文章
相關標籤/搜索