首页 > 解决方案 > 制作良好的 REST API 请求缓存密钥的最佳实践是什么?

问题描述

我正在使用 Ruby on Rails 构建一个简单的 API 服务。在生产中,我想集成Redis/Memcached以便使用基于键的缓存来缓存一些常用的端点。例如,我有一个带有namecolor字段的 Car 表。

(eg. /cars我的问题是,当资源具有各种可能以不同顺序出现的参数时,为特定端点定义缓存键的最佳方法是什么?例如。/cars?name=honda&color=white, /cars?color=white&name=honda.

如果我使用请求 url 作为缓存键,我将有 2 个不同的缓存记录,但从技术上讲,如果两者都name具有color相同的值,那么 Redis 数据库中应该只有一个缓存记录。

标签: restredisruby-on-rails-5memcachedspring-cache

解决方案


按字母顺序排列参数并将其用作缓存键的基础。

/cars?name=honda&color=white
/cars?color=white&name=honda

在这两种情况下,缓存键都将基于串联的按字母顺序列出的参数

colorname

因此,上述两个重新排序的 url 都会产生相同的缓存键。


推荐阅读