Redisのクライアントサイドキャッシュで応答性を向上させる
(gosuda.org)Redisは高速ですが、頻繁なデータ参照はAPIサーバーに負荷をかけます。特にリアルタイムデータのように更新は不規則でも頻繁に参照する必要がある場合は、効率的なキャッシュ戦略が必要です。
-
問題点: Redis PubSubやKeyspace Notificationは、更新検知やメッセージ処理ロジックが複雑になったり、リソースの浪費を招いたりすることがあります。
-
解決策: Redis 6.0から対応したInvalidation Messageは、サーバーがクライアントキャッシュを管理する方式です。
- クライアントがキーを読んだ後に別のクライアントがそれを変更すると、Redisが更新メッセージを送ってキャッシュを削除させます。
-
実装: Go言語では、redigo+ristrettoの組み合わせ、またはrueidisライブラリを使ってInvalidation Messageを適用できます。
- redigo+ristrettoはカスタムロジックが必要ですが、rueidisは
DoCache関数で簡単に実装できます。
- redigo+ristrettoはカスタムロジックが必要ですが、rueidisは
-
結果: 実際に適用した結果、API応答速度は最大82%改善し、Redisサーバーの負荷も減少しました。クライアントサイドキャッシュの管理は必要ですが、性能向上の効果は大きいです.
1件のコメント
👀