Redisのメモリ操作技術

1858 ワード

私たちは本を買って、興味のある技術Redisを再学習しています.
メモリベースのRedisをよりよく使用するには、メモリの管理方法を理解する必要があります.
記憶テクニックについての学習内容を整理するために位置づけました^^
メモリを使用すると、メモリのサイズが限られているに違いありません...
すべてのデータを100%管理できないため、Redisを使用する場合は、LFUアルゴリズムとLRUアルゴリズムを使用してデータを管理できます.
最近よく使われているLFUアルゴリズム
最も引用頻度の低いデータから整理するアルゴリズム.
RedisがLFUアルゴリズムを使用してインスタンスを実行するにはRedisが必要です.confファイルに追加する必要があります.
lfu-log-factor 10	<< LFU 알고리즘에 의한 메모리 운영(default 10)
lfu-decay-time 1  
最近使用したLRUアルゴリズム
最近使われていないデータから整理するアルゴリズム.
RedisがLRUアルゴリズムを使用してインスタンスを実行するにはRedisが必要です.confファイルに追加する必要があります.
Maxmemory ???(ex 30000000)    	<< Redis 인스턴스를 위한 총 메모리 크기
Maxmemory-sample 5 		<< LRU 알고리즘에 의한 메모리 운영
LazyFree
RedisのデータがMaxメモリに到達すると、メモリ管理アルゴリズムは複数のキー削除を実行し、パフォーマンスが遅延する可能性があります.
LazyFreeを設定することで、パフォーマンスの問題をある程度解消するためにバックグラウンドで操作できます.
redis.confファイルに追加:
lazyfree-lazy-eviction   no	<< unlink로 삭제하고 새키를 저장하기 위해 yes를 권장한다고 함(unlink로 삭제시 메인 쓰레드에서 삭제하지 않고 sub thread에서 삭제하기 때문에 블록킹이 발생하지 않음)
lazyfree-lazy-expire     no 	<< unlink로 만료된 키를 제거하기 위해 yes를 권장
lazyfree-lazy-server-del no	<< unlink로 데이터를 변경하기 위해 yes를 권장
slave-lazy-flush	 no	<< slave 서버가 삭제 후 다시 복제할 때 flushall async 명령어로 삭제하기 위해 yes를 권장

  • lazyfree-lazy-evactionがnoの場合、delコマンドを使用して既存のデータを削除するため、redisコマンドを処理するプライマリ・スレッドでブロック化されます.

  • lazyfree-lazy-expireがnoの場合、プライマリスレッドのブロック化はdelコマンドを使用して内部の期限切れの鍵を削除するためです.

  • Lazyfree-lazy-server-delがnoの場合、キー値のsetまたはrenameが発生したときにdelコマンドが内部で実行され、この場合、プライマリスレッドのブロック化が発生します
  • なぜslave-lazy-flushをyesに設定するのか
    Master-SlaveまたはPartition Replication環境では、通常は変更された部分のみがコピーされますが、既存のデータをすべて削除して再コピーする場合があります.
    この場合、このタスクをより迅速に完了できます.
    ここではRedisでメモリを管理する方法を紹介します!
    足りないところや間違ったところがあったらメッセージを!
    ありがとう