redisセキュリティおよび必須知識


redisセキュリティおよび必須知識
一.redisセキュリティ
redisのパスワードコマンドラインのモードを設定します(再起動後に失効します):パスワードを表示します:
CONFIG GET requirepass
パスワード認証:
AUTH password
パスワードの設定:
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
プロファイルで使用できないコマンドを指定します.
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command SHUTDOWN ""
rename-command KEYS ""
rename-command MONITOR ""

二.redis性能試験
性能テストとは,redisの応答速度を大きな同時で見ることである.redis-benchmarkというredisが持参したテストコマンドでテストできます.
# 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は、2つの永続化方式をサポートします.
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が予期せぬダウンタイムになると、最後のスナップショットの変更データが失われます.aof方式はより良い持続化性能を有する.aofを使用すると、redisは受信した書き込みコマンドをwrite関数でファイルに追加し、redisが再起動するとファイルに保存されている書き込みコマンドを再実行してデータベース全体の内容をメモリに再構築します.もちろんosはカーネルにwriteの変更をキャッシュするので、すぐにディスクに書き込むのではなく、aof方式の永続化で一部の変更が失われる可能性があります.プロファイルを使用して、fsync関数でosをディスクに強制的に書き込むタイミングをredisに伝えることができます.構成:
appendonly yes  #   aof     
appendfilename "appendonly.aof"  #  aof    
# appendfsync always  #               ,          
appendfsync everysec  #          ,                  
# appendfsync no  #     os,          

四.redisトランザクション
redisトランザクションは、複数のコマンドを一度に実行できます.1つのトランザクションの開始から実行までに、次の3つのフェーズがあります.
  • 取引開始(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コマンドによるすべてのキーの監視を解除
    WATCH key [key ...]
    1つ(または複数)のkeyを監視し、トランザクションが実行される前に他のコマンドで変更された場合、トランザクションは中断されます.