我正在使用 Ruby on Rails 构建一个简单的 API 服务。在生产中,我想集成 Redis/Memcached
以便使用基于键的缓存来缓存一些常用的端点。例如,我有一个包含 name
和 color
字段的 Car 表。
我的问题是,当资源具有可能以不同顺序出现的各种参数时,为特定端点 (例如/cars
)定义缓存键的最佳方法是什么?例如。 /cars?name=honda&color=white
, /cars?color=white&name=honda
.
如果我使用请求 url 作为缓存键,我将有 2 个不同的缓存记录,但从技术上讲,如果 name
和 color
具有相同的值,则应该只有Redis数据库中一条缓存记录。
最佳答案
按字母顺序排列参数并将其用作缓存键的基础。
/cars?name=honda&color=white
/cars?color=white&name=honda
在这两种情况下,缓存键都将基于串联的按字母顺序列出的参数
colorname
所以上面两个重新排序的 url 会产生相同的缓存键。
关于rest - 制作良好的 REST API 请求缓存键的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56061433/