Celeryを活用した非同期タスク処理システムの実装パターン
システムアーキテクチャの設計
分散タスクキューを実装する際、主要コンポーネントとしてワーカープロセス、メッセージブローカー、タスク管理モジュールを設計する必要があります。Redisをメッセージブローカーおよび結果ストレージとして選定した理由は、軽量なインストール要件とCeleryとの高い互換性にあります。システム要件として、タスクのライフサイクル管理、エ ...
7月11日 16:06 投稿
Linux環境でDockerを用いてRedisコンテナとブloomフィルタをインストールする方法
はじめに
多くのプロジェクトでキャッシュとして利用されるRedis。Redisの学習中に、キャッシュのパフォーマンス問題(キャッシュのパニング、ヒット、雪崩)に遭遇しました。その中で、キャッシュのパニング問題に対する解決策の一つとしてブloomフィルタが挙げられました。ブloomフィルタの実装には、Guava、Redisson、RedisBloomなど複数の選択肢がありますが、今回はロ ...
7月10日 21:42 投稿
Redisの永続化データ復元手順
Redisでは、主に2つの永続化方式が提供されています。一つはRDB(Redis Database Backup)、もう一つはAOF(Append Only File)です。それぞれ異なる特徴と利用目的を持っています。以下では、これらの方式を使ってRedisのデータを復元する方法について説明します。
1. RDB(Redisデータベーススナップショット)
RDBはRedisの永続化メカニズムの一つで、定期的にデータベ ...
7月10日 20:40 投稿
Sentryバックエンドサービス開発者向けガイド
サービス管理 (devservices)
Sentryは開発環境で必要な依存サービスを管理するdevservices抽象化レイヤーを提供します。
sentry devservices [オプション] コマンド [引数]
オプション:
--help ヘルプ表示
コマンド:
attach フォアグラウンドで単一サービス実行
down 全サービス停止
rm 全サービスと関連データ削除
up 依存サービスの起動/更新 ...
7月8日 16:43 投稿
Redisクラスタに接続するPHP環境の構築
Redisクラスタへのクライアント接続
前回の記事でRedisサーバーを正常に構築できた場合、次はPHPアプリケーションからRedisクラスタに接続するための環境を設定します。以下の手順に従って、PHP 7.1環境と関連拡張機能をインストールし、Nginxと連携させて動作を確認します。
1. PHP 7.1および関連拡張機能のインストール
まず、PHP 7.1と必要な拡張機能をインストールし ...
7月7日 19:10 投稿
Redis Sentinelモードの設定と使用方法
1. Sentinelの役割
- Redisサーバーの監視を行い、マスターサーバーとスレーブサーバーの状態をチェックします。
- マスターがダウンした場合、自動的にスレーブを新しいマスターに昇格させ、その変更を他のスレーブに通知します。
2. Sentinelの主要な設定
sentinel monitor mymaster 127.0.0.1 6379 1
- 数字1は、1つのSentinelがマスターがダウンしたと判断した場合 ...
7月6日 20:03 投稿
Kubernetes クラスタで Bitnami Redis Helm Chart を用いた Master-Slave レプリケーション環境の構築手順
概要
本記事では、Kubernetes クラスタ上に Redis を Master-Slave レプリケーション構成でデプロイする手順を解説します。Helm パッケージマネージャと Bitnami が提供する公式チャートを活用することで、PV 動的プロビジョニングを前提とした高速な環境構築を実現します。
前提条件
Kubernetes 1.25 以上が稼働していること
Helm 3.10 以上がインストール済みであるこ ...
7月6日 00:38 投稿
Spring Boot、AOP、Luaを使用した分散型レートリミットの実践的実装
一、レートリミットとは?なぜレートリミットが必要なのか?
皆さんは北京の地下鉄に乗ったことがありますか?入場時に長蛇の列ができるのはなぜでしょうか?答えは「レートリミット」です!地下鉄の輸送能力には限界があり、一度に多くの乗客が乗り込むとプラットフォームが混雑し、列車が過剰な乗客を乗せてしまうと安全上の問題が発生します。同様に、私たちのプログラ ...
7月5日 22:53 投稿
PhpSpreadsheetのメモリ最適化とPHPExcelからの移行手法
メモリ使用量の削減
PhpSpreadsheetはワークシートごとに各セルあたり約1KBのメモリを消費するため、大規模なブックでは迅速にメモリを消費します。セルキャッシュ機能により、PhpSpreadsheetはセルオブジェクトをメモリ内だけでなく、ディスクやAPCu、Redisなどの外部ストレージに保持できるようになります。これにより大規模ブックのメモリ使用量を削減できますが、デー ...
7月5日 21:09 投稿
Spring BootでのLettuceを用いたRedis統合ガイド
一、Lettuceについて
Redisサーバーについては、以前のブログ記事で既に触れていますので、ここでは詳細を割愛します。LettuceとJedisは両方ともRedisサーバーに接続するクライアントプログラムですが、実装方法が異なります。JedisはRedisサーバーに直接接続しますが、マルチスレッド環境ではスレッドセーフではないため、接続プールを使用する必要があります。各Jedisイ ...
7月4日 20:06 投稿