13 ポイント 投稿者 lemonmint 2024-11-29 | 1件のコメント | WhatsAppで共有

Redisは高速ですが、頻繁なデータ参照はAPIサーバーに負荷をかけます。特にリアルタイムデータのように更新は不規則でも頻繁に参照する必要がある場合は、効率的なキャッシュ戦略が必要です。

  • 問題点: Redis PubSubやKeyspace Notificationは、更新検知やメッセージ処理ロジックが複雑になったり、リソースの浪費を招いたりすることがあります。

  • 解決策: Redis 6.0から対応したInvalidation Messageは、サーバーがクライアントキャッシュを管理する方式です。

    • クライアントがキーを読んだ後に別のクライアントがそれを変更すると、Redisが更新メッセージを送ってキャッシュを削除させます。
  • 実装: Go言語では、redigo+ristrettoの組み合わせ、またはrueidisライブラリを使ってInvalidation Messageを適用できます。

    • redigo+ristrettoはカスタムロジックが必要ですが、rueidisはDoCache関数で簡単に実装できます。
  • 結果: 実際に適用した結果、API応答速度は最大82%改善し、Redisサーバーの負荷も減少しました。クライアントサイドキャッシュの管理は必要ですが、性能向上の効果は大きいです.

1件のコメント

 
jujumilk3 2024-11-29

👀