【问题标题】:Use Redis to serve URL map to nginx使用 Redis 为 nginx 提供 URL 映射
【发布时间】: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


【解决方案1】:

你说的对,HttpRedis 更适合缓存。使用 redis2 模块会更好。你需要执行的命令最好由 redis2 提供的更一般的情况来提供

【讨论】:

    猜你喜欢
    • 2021-08-20
    • 2016-09-21
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2015-12-14
    相关资源
    最近更新 更多