[Redis] Advanced Redis

1つは、Redis.confの詳細な説明

  1. 基本構成情報ここに画像の説明を挿入
  2. INCLUDES(構成ファイルのインポート)ここに画像の説明を挿入
  3. ネットワーク(ネットワーク)
绑定的ip:		bind 127.0.0.1     

保护模式:		protected-mode yes  

绑定的端口号:	port 6379  
  1. 一般的な
后台运行,默认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  # 日志的文件位置名
  1. スナップショット(スナップショット)
    持久化操作
    ここに画像の説明を挿入
# 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 ./
  1. REPLICATION(マスタースレーブレプリケーション)
    ここに画像の説明を挿入
  2. SECURITY(セキュリティ)
# 设置密码 默认没有密码
requirepass 1234
命令设置密码:
CONFIG SET requirepass 1234
命令获取密码:
CONFIG GET requirepass
密码登陆:
AUTH 1234 

ここに画像の説明を挿入

  1. クライアント(制限)
# 最大客户端连接数
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 : 永不过期,返回错误
  1. 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

  • 利点:

    1. 大規模なデータ復旧に最適
    2. データ整合性の要件が低い
  • 短所:

    1. 一定の時間間隔が必要です。redisが予期せず閉じられると、最後の変更を保存できません
    2. フォークプロセスはメモリ制御を占有します

AOF

実行されたすべてのコマンドを記録する

  • 手動で変更:appendonly yes(デフォルトno)は再起動後に自動的に作成されます
    ここに画像の説明を挿入
  • 利点
    1. すべての変更は良好な整合性で同期されます
    2. リアルタイム同期
  • 不利益
    1. データファイルの場合、aofはrdbより大きく、リカバリ速度は非常に遅い

3、パブリッシュおよびサブスクライブ

  • サブスクリプション

チャンネル登録[チャンネル]

  • 解放する

公開[チャネル] [メッセージ]

  • 公開されたデータをリアルタイムで監視

4つのマスタースレーブレプリケーション

  • 1つのマスター2つのスレーブ戦略
    1. フォローするホストを指定します:slaveof [ホストのポート番号]
    2. マスター/スレーブ構成の表示:情報の複製
      ここに画像の説明を挿入
  • スレーブを構成する

  1. cp redis.conf redis80.conf
    cp redis.conf redis81.confを順に実行します
  2. redis80.confおよびredis81ファイルのprot、log、pid、およびrdbを新しいホストのprotに変更します(構成ファイルでマシンを設定する必要がある場合は、以下に示すようにレプリケーションを変更します)
    ここに画像の説明を挿入
  • データ複製の原理
    スレーブは正常に起動した後、同期コマンドをマスターに送信します。
    マスターは命令を受け取ると、同期のためにすべてのデータファイルをバックグラウンドでスレーブに送信します。
  1. 完全コピー:スレーブサービスがデータベースファイルを受信すると、それをメモリにロードします。
  2. 増分レプリケーション:マスターは保存されたコマンドを実行し、それをslvaeに送信して同期を完了します。

5、キャッシュ浸透キャッシュ雪崩

  • キャッシュペネトレーション:キーに対応するデータがデータソースに存在しません。このキーのリクエストをキャッシュから取得できないたびに、リクエストはデータソースに送られ、データソースを圧倒する可能性があります。たとえば、キャッシュやデータベースがない場合でも、存在しないユーザーIDを使用してユーザー情報を取得すると、ハッカーがこの脆弱性を利用して攻撃を行うと、データベースを圧倒する可能性があります。
  • キャッシュの内訳:キーに対応するデータは存在しますが、redisで期限切れになります。現時点では、多数の同時リクエストが入ってくると、これらのリクエストは通常​​、バックエンドDBからデータをロードし、キャッシュの期限が切れるとキャッシュにリセットします。これは、大きな同時リクエストです。すぐにバックエンドDBを圧倒する可能性があります。
  • キャッシュ雪崩:キャッシュサーバーが再起動したり、多数のキャッシュが特定の時間内に失敗したりすると、失敗したときにバックエンドシステム(DBなど)に大きな負荷がかかります。

おすすめ

転載: blog.csdn.net/m0_46537958/article/details/108543355