Redis Advanced
1つは、Redis.confの詳細な説明
- 基本構成情報
- INCLUDES(構成ファイルのインポート)
- ネットワーク(ネットワーク)
绑定的ip: bind 127.0.0.1
保护模式: protected-mode yes
绑定的端口号: port 6379
- 一般的な
后台运行,默认no,需要设为yes: daemonize no
后台运行需要指定pid文件: pidfile /var/run/redis_6379.pid
默认数据库个数: databases 16
是否总是显示logo: always-show-logo yes
日志级别:
# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing) 测试开发阶段
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably) 重要通知,生产环境
# warning (only very important / critical messages are logged) 关键信息
loglevel notice # 日志的文件位置名
- スナップショット(スナップショット)
持久化操作
# 900s内,1个key进行了修改,我们进行持久化操作
save 900 1
# 300内,10个key进行了修改,我们进行持久化操作
save 300 10
# 60s内,10000个key进行了修改,我们进行持久化操作
save 60 10000
# 持久化出错,是否继续工作
stop-writes-on-bgsave-error yes
# 是否压缩rdb(持久化文件)文件
rdbcompression yes
#保存rdb文件,错误校验
rdbchecksum yes
# rdb持久化存储文件
dbfilename dump.rdb
# rdb文件保存目录
dir ./
- REPLICATION(マスタースレーブレプリケーション)
- SECURITY(セキュリティ)
# 设置密码 默认没有密码
requirepass 1234
命令设置密码:
CONFIG SET requirepass 1234
命令获取密码:
CONFIG GET requirepass
密码登陆:
AUTH 1234
- クライアント(制限)
# 最大客户端连接数
maxclients 10000
# 最大内存容量
maxmemory <bytes>
# 内存到达上线的处理策略
maxmemory-policy noeviction
1、volatile-lru:只对设置了过期时间的key进行LRU(默认值)
2、allkeys-lru : 删除lru算法的key
3、volatile-random:随机删除即将过期key
4、allkeys-random:随机删除
5、volatile-ttl : 删除即将过期的
6、noeviction : 永不过期,返回错误
- APPEND ONLY MODE(モード)
# 默认不开启aof模式,默认rdb模式,大多数情况是够用的
appendonly no
# 持久化文件名称
appendfilename "appendonly.aof"
# appendfsync always # 修改一次执行一次
appendfsync everysec # 每秒执行一次,sync可能会丢失
# appendfsync no # 自己同步
二、持久化
RDB
-
rbdストレージファイル:dbfilename dump.rdb
このディレクトリに.rdbファイルがある場合、その中のデータは起動後に自動的に復元されます
127.0.0.1:6379> CONFIG GET dir
-
利点:
- 大規模なデータ復旧に最適
- データ整合性の要件が低い
-
短所:
- 一定の時間間隔が必要です。redisが予期せず閉じられると、最後の変更を保存できません
- フォークプロセスはメモリ制御を占有します
AOF
実行されたすべてのコマンドを記録する
- 手動で変更:appendonly yes(デフォルトno)は再起動後に自動的に作成されます
- 利点
- すべての変更は良好な整合性で同期されます
- リアルタイム同期
- 不利益
- データファイルの場合、aofはrdbより大きく、リカバリ速度は非常に遅い
3、パブリッシュおよびサブスクライブ
- サブスクリプション
チャンネル登録[チャンネル]
- 解放する
公開[チャネル] [メッセージ]
- 公開されたデータをリアルタイムで監視
4つのマスタースレーブレプリケーション
- 1つのマスター2つのスレーブ戦略
- フォローするホストを指定します:slaveof [ホストのポート番号]
- マスター/スレーブ構成の表示:情報の複製
- スレーブを構成する
cp redis.conf redis80.conf
cp redis.conf redis81.confを順に実行します- redis80.confおよびredis81ファイルのprot、log、pid、およびrdbを新しいホストのprotに変更します(構成ファイルでマシンを設定する必要がある場合は、以下に示すようにレプリケーションを変更します)
- データ複製の原理
スレーブは正常に起動した後、同期コマンドをマスターに送信します。
マスターは命令を受け取ると、同期のためにすべてのデータファイルをバックグラウンドでスレーブに送信します。
- 完全コピー:スレーブサービスがデータベースファイルを受信すると、それをメモリにロードします。
- 増分レプリケーション:マスターは保存されたコマンドを実行し、それをslvaeに送信して同期を完了します。
5、キャッシュ浸透キャッシュ雪崩
- キャッシュペネトレーション:キーに対応するデータがデータソースに存在しません。このキーのリクエストをキャッシュから取得できないたびに、リクエストはデータソースに送られ、データソースを圧倒する可能性があります。たとえば、キャッシュやデータベースがない場合でも、存在しないユーザーIDを使用してユーザー情報を取得すると、ハッカーがこの脆弱性を利用して攻撃を行うと、データベースを圧倒する可能性があります。
- キャッシュの内訳:キーに対応するデータは存在しますが、redisで期限切れになります。現時点では、多数の同時リクエストが入ってくると、これらのリクエストは通常、バックエンドDBからデータをロードし、キャッシュの期限が切れるとキャッシュにリセットします。これは、大きな同時リクエストです。すぐにバックエンドDBを圧倒する可能性があります。
- キャッシュ雪崩:キャッシュサーバーが再起動したり、多数のキャッシュが特定の時間内に失敗したりすると、失敗したときにバックエンドシステム(DBなど)に大きな負荷がかかります。