-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hot-fix: Write-back value in memory when it's available in redis #174
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これ memoryCache から取ってきたものも set してしまい TTL が無限みたいなことになりません?
@riku6460 You're true. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
おそらく RedisKVCache も同じ問題を抱えてそうですが、どうしましょうか
resolvedにされてるのみてなかった
|
今ハッキリと爆発しているのは CustomEmojiService なので、一旦これ入れて結果を見たいかなという気持ちです。 |
Kudos, SonarCloud Quality Gate passed! 0 Bugs No Coverage information |
確かに。とりあえずここでは RedisSingleCache のみで良さそうです |
…skeyIO#174) * Write-back value in memory when it's available in redis * Fix recursive cache * Fix bug in case that invalid data in redis cache
What
Memory 上の lifetime(TTL) は切れたが、Redis 上の lifetime はまだ切れていないという状況で、Redis から読み取った値を MemoryCache に書き戻します。
Why
現状、Redis + MemoryCache の2層キャッシュである RedisSingleCache において、MemoryCache 上の lifetime(TTL) は切れたが、Redis 上の lifetime はまだ切れていないという状況で、都度 Redis へのリクエストと Redis からのレスポンスのパースが走ってしまいます。
(つまり、MemoryCache が仕事をしなくなってしまう)
この影響で、CustomEmojiService ではキャッシュを書いた3分後からの27(=30-3)分間は Redis へのクエリと JSON.parse が大爆発するボーナスタイムになっています。
このパッチはこれを解決します。
Additional info (optional)
Redis 上での残り lifetime を考慮せずに MemoryCache に書き戻してしまうため、実際の lifetime が lifetime + memoryCacheLifetime となります。
たとえば CustomEmojiService では従来30分間の lifetime だったところ、このパッチの影響で33分間キャッシュされることになります。