Map 使用Redis提供到nginx的URL映射

Map 使用Redis提供到nginx的URL映射,map,url-rewriting,nginx,rewrite,redis,Map,Url Rewriting,Nginx,Rewrite,Redis,我想在Redis中维护一个动态数据库,其中SEO友好的URL作为键,讨厌的查询字符串URL作为值。我想在收到请求时直接从Nginx调用它,获取令人讨厌的查询字符串URL,并将其传递给Apache以提供内容 我曾经考虑过只需要一个平面映射文件,但那将是一个相当大的文件(200000多个条目),而且它必须经常通过cron作业或其他方式进行更新。。。不太优雅 我的想法是这样的: map $uri $new { # instead of this... # include /path/t

我想在Redis中维护一个动态数据库,其中SEO友好的URL作为键,讨厌的查询字符串URL作为值。我想在收到请求时直接从Nginx调用它,获取令人讨厌的查询字符串URL,并将其传递给Apache以提供内容

我曾经考虑过只需要一个平面映射文件,但那将是一个相当大的文件(200000多个条目),而且它必须经常通过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模块,但是示例非常稀少,它似乎更适合于提供缓存内容。我也检查了模块,但这似乎有些过分。我只需要执行简单的GET命令

我可以使用HttpRedis模块来实现这一点并直接连接到Redis吗?如果是这样,这样的配置会是什么样子


提前感谢您的帮助。

您认为HttpRedis更适合缓存是对的。使用redis2模块会更好。您需要执行的命令最好由redis2提供的更一般的情况提供

Nginx使用事件轮询,Redis是单线程的。两者都必须100%在内存中,并且都是连续时间的查找,但由于Nginx不是单线程的,我想说,如果您想超过20k RPS,它将比使用Redis快得多。因此,如果您的数据不经常更改,并且您有很好的理由不在Apache中处理URL映射,那么我建议尝试将映射转储到文件中,并在更新后使用inotify重新加载nginx config。