我正在使用我用 Sinatra 制作的 API 构建一个简单的应用程序,该 API 返回一些 JSON。这是相当多的 JSON,我的应用程序的 API 依赖于对其他 API 的数百个请求。
我大概可以将结果缓存 5 天左右,数据完全没有问题。我只是不是 100% 确定如何实现缓存。我该如何与 Sinatra 合作呢?
就我个人而言,相对于 memcached,我更喜欢使用 redis 来处理此类事情。我有一个应用程序,我非常广泛地使用 redis,使用它的方式与您所描述的类似。如果我进行未缓存的调用,页面加载时间将超过 5 秒,而使用 redis,加载时间将降至 0.3 秒左右。您还可以设置过期时间,该时间可以很容易地更改。我会做这样的事情来从缓存中检索数据。
require 'redis'
get '/my_data/:id' do
redis = Redis.new
if redis[params[:id]]
send_file redis[params[:id]], :type => 'application/json'
end
end
然后当你想将数据保存到缓存时,也许是这样的:
require 'redis'
redis = Redis.new
<make API calls here and build your JSON>
redis[id] = json
redis.expire(id, 3600*24*5)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)