Jar*_*red 2 java caching redis
我有一个 Java 应用程序,负责向客户端应用程序提供各种(有时很大)json 响应。在应用程序层,它使用 Redis (AWS ElastiCache) 缓存 json,其 TTL 为 30 秒到 5 分钟,具体取决于特定请求。有些请求运行时间相当长(5-15 秒),会联系多个外部服务并返回大量数据。如果 TTL 为 60 秒,这仍然意味着某些用户每分钟都会收到不可接受的响应时间。我不想在 TTL 达到时立即从缓存中逐出数据,而是希望启动后台任务来获取数据并刷新缓存,同时继续提供数据的过时副本(如果存在)。Redis 可以做到这一点吗?
您可以通过为要缓存的每个项目编写一对条目来手动实现此目的。
item:TTL 设置为硬驱逐的实际项目item/fresh:布尔值,TTL 设置为软驱逐(即标记为过时)。该 TTL 应小于硬 TTL。查询时,始终要求提供两个密钥
场景 1 - 缓存未命中(item不存在)
场景 2 - 缓存命中(两个键都存在)
场景 3 - 陈旧(item/fresh不存在)
| 归档时间: |
|
| 查看次数: |
2196 次 |
| 最近记录: |