【发布时间】:2011-08-12 14:01:26
【问题描述】:
我想在 Redis 中维护一个动态数据库,其中 SEO 友好的 URL 作为键,讨厌的查询字符串 URL 作为值。我想在请求进来时直接从 Nginx 调用它,获取讨厌的查询字符串 URL 并将其传递给 Apache 以提供内容。
我曾想过只拥有一个平面地图文件,但这会非常庞大(200,000 多个条目),并且必须经常通过 cron 作业或其他什么来更新......不是很优雅。
我的想法是这样的:
map $uri $new {
# instead of this...
# include /path/to/the/nginx_map.txt;
# I want to do this...
redis_magic_thing GET $uri;
}
我一直在查看 Nginx 的 HttpRedis 模块,但示例非常少,而且似乎更适合提供缓存内容。我还检查了Redis2 模块,但这似乎有点矫枉过正。我只需要执行普通的旧 GET 命令。
我可以使用 HttpRedis 模块来执行此操作并直接连接到 Redis 吗?如果是这样,这样的配置会是什么样子?
提前感谢您的帮助。
【问题讨论】:
-
Nginx 使用事件轮询,Redis 是单线程的。两者都必须 100% 在内存中并且是持续时间查找,但由于 Nginx 不是单线程的,我想说如果你想超过 20k RPS,它会比使用 Redis 快得多。因此,如果您的数据不经常更改并且您有充分的理由不在 Apache 中处理 URL 映射,那么我建议您尝试将映射转储到文件并在更新后使用 inotify 重新加载 nginx 配置。
标签: map url-rewriting nginx rewrite redis