我正在尝试使用docker连接PHP和redis(撰写) 泊坞窗,compose.yml version: '2' services: redis: image: redis:3.2.2 php: image: company/php:dev7 volumes: – .:/var/www/ networks: – net links: – redis nginx: image: company/nginx volumes: – .:/var/www/ – ./docker/nginx_conf:/etc/nginx/conf.d/ networks: – net ports: – 80:80 networks: net: driver: bridge 这一切运作良好,我能够运行nginx和php。 但是,当我试图与Redit连接它告诉我它不能得到地址信息: 致命错误:未捕获Predis \ Connection \ ConnectionException:php_network_getaddresses:getaddrinfo失败:名称或服务未知[/ tcp:// redis:6379]在/var/www/htdocs/vendor/predis/predis/src/Connection/AbstractConnection.php在线155 这是我试图连接的方式: $client = new \Predis\Client([ 'host' => 'redis', […]
我想与nginx的redis进行通信,以便在列表中存储哪些请求是在图像上进行的,特别是在未在另一台服务器上进行代理的图像上。 我安装了OpenResty,以便使用redis2_query和redis2_pass命令。 这是我的nginxconfiguration: location ~* \.(jpg|jpeg|gif|png)$ { try_files $uri @imagenotfound; redis2_query lpush founds $uri; redis2_pass 127.0.0.1:6379; } location @imagenotfound { proxy_pass http://imgdomain.com/$uri; proxy_set_header Host imgdomain.com; proxy_set_header Server imgdomain.com; redis2_query lpush notfounds $uri; redis2_pass 127.0.0.1:6379; } 我做的每一个请求都返回一个整数,而且据我所知, redis2_pass返回查询的结果。 反正有没有返回这个结果,只是执行查询? 如果我删除了redis2_query和redis2_pass ,图像显示正确。 在此先感谢您的帮助!
我在我的网站上使用nginx和redis。 对于我的网站上的几个项目,我想添加跟踪参数到他们的url,以便当用户点击一个项目时,我可以收集用户请求的内容用户服务的统计数据。 我正在寻找如何从nginx获取redis中的统计信息的方法,也就是说,不需要打开后台应用程序。 例如,假设我在页面上有几行表格,每个表格都以行/列格式保存着项目。 因此,对于{table:2,row:1,column:3}中的项目,如果实际的url是:www.mysite.com/news/dodi,那么我想要embeddedurl:www.mysite.com/news /多迪/天= 29?表= 2&行= 1&柱= 3。 当用户点击它时,nginx会触发redis来获取内容,并更新相应的统计信息(这里可以是第29天,第2天……)。 任何build议我如何实现这一点,而不击中背景应用程序?
我用pecl install redis安装了php5 pecl扩展,在/etc/php5/fpm/conf.d/21-redis.ini和/etc/php5/cli/conf.d/21-redis.ini添加了extension=redis.so /etc/php5/cli/conf.d/21-redis.ini 。 然后我重新启动了php5-fpm和nginx 。 现在php -m | grep redis php -m | grep redis显示我redis安装正确的cli,但phpinfo (使用nginx)显示没有redis和Additional .ini files parsed列表下: /etc/php5/fpm/conf.d/00-ioncube.ini,/etc/php5/fpm/conf.d/05-opcache.ini,/etc/php5/fpm/conf.d/10-mysqlnd.ini ,/etc/php5/fpm/conf.d/10-pdo.ini,/etc/php5/fpm/conf.d/20-curl.ini,/etc/php5/fpm/conf.d/20-json。 ini,/etc/php5/fpm/conf.d/20-mysql.ini,/etc/php5/fpm/conf.d/20-mysqli.ini,/etc/php5/fpm/conf.d/20-pdo_mysql .ini,/etc/php5/fpm/conf.d/20-readline.ini 但是相同的目录包含21-redis.ini,由于某些原因被忽略: # ls -1 /etc/php5/fpm/conf.d/ 00-ioncube.ini 05-opcache.ini 10-mysqlnd.ini 10-pdo.ini 20-curl.ini 20-json.ini 20-mysql.ini 20-mysqli.ini 20-pdo_mysql.ini 20-readline.ini 21-redis.ini 该文件的内容如预期的那样: # cat /etc/php5/fpm/conf.d/21-redis.ini extension=redis.so 而且它是世界上可读的。 /var/log/php5-fpm.log没有错误,也没有/var/log/syslog 。 为什么不用php-fpm加载redis扩展?
我正在试图做一个使用redis作为后端的Java应用程序 。 由于Redis是一个非常快速的键值存储,所以我希望使用这个存储,但redis被用于1个客户端,所以它没有用户选项:通过身份validation。 我想find一种方法来实现某种身份validation,所以我尝试了nginx的redis2扩展。 我这样做是因为我可以使用客户端的证书和HTTPS。 但是这使得我的应用程序非常慢。 我正在考虑使用某种通过nginx代理连接到redis的隧道。 对于这个redis会在本地主机上监听,并且会有一个地址我想用来访问redis,但是使用httpsauthentication。 所以基本上我现在的方法 JAVA – Jedis – LAN – REDIS ,would be JAVA – Jedis(with localhost as the tunnel entrance?)- -SSL LAN – Nginx(tunnel exit) – Redis 任何提示实现这一点? 我一直在网上search最后的日子,但我不能提出任何事情,只增加了一点本地连接的开销。
我需要在nginx服务器内创build一个asynchronous调度器来更新一个variables。 让我给你一个例子,我是这个意思,为什么我需要它。 想象一下configuration文件,看起来像这样: http { lua_shared_dict foo 5m; server { location /set { content_by_lua ' local foo = ngx.shared.foo ngx.say(foo:get("12345")) '; } } } 我指定了驻留在共享内存中的variablesfoo ,并且所有工作进程都可以访问它。 我想要做的就是从lua脚本中设置那些将被称为每个微小的值。 仅供参考,它将转到Redis ,然后检索必要的数据,并更新此variables。 我知道我可以在每次调用中都在content_by_lua中执行此操作,但对于大量stream量来说效率非常低。 我想要一个单独的进程,每分钟会触发一个任务。 在nginx有没有这样的东西,还是有任何模块可以帮助我呢?
我正在使用下面的堆栈: nginx的 uwsgi Python(烧瓶) 我已经build立了一个利用redis作为主要数据库的小应用程序。 我只在代码中使用GET,SET,EXISTS和EXPIRE。 当在terminal中尝试应用程序时,一切正常。 在每个请求上,它检查内容是否可用(EXISTS)。 如果不是内容被加载并保存一段时间(SET,EXPIRE)。 之后,内容呈现给用户(GET)。 问题是,只要我通过nginx / uwsgi运行应用程序,经过一段时间EXPIRE似乎被忽略。 新的内容不是删除并重新加载,而是新的内容附加到旧的内容 – 因为它似乎不仅是一次,而且像几十次,导致非常大的值,有时超时。 对我来说最奇怪的是:只要我重新启动uwsgi,整个问题就会消失。 任何想法?
我使用Nginx和UWSGI,我希望Nginx执行caching。 我知道有一个uwsgi_cache可以用来caching本地文件系统上的页面。 但是我想用Redis来caching内存中的页面 这怎么可能? 更新: 我不想代理向Redis发送请求,并从中提供内容。 我想让Nginx代理请求到UWSGI并执行caching,这可能使用uwsgi_cache参数,但问题是它只caching在文件系统上,而不是其他任何东西。
我使用redis2-nginx-module来提供存储为redis值的html内容。 以下是获取redis密钥值的nginxconfiguration代码。 redis2_query get $fullkey; redis2_pass localhost:6379; #default_type text/html; 当URL被击中时,以下不需要的响应与该键的值一起呈现。 $14 如何删除这个不需要的输出? 另外如果作为parameter passing的键在redis中不存在,如何检查这个条件并显示一些默认页面?
我正在使用AWS Elasticache Redis,而且我一直在使用Redis和许多连接。 使用“全部信息”,我可以看到使用的连接总数一天可以增长到5万个左右。 目前我正在使用PHP来连接到Redis,我已经把它放到了许多不同的php函数中,所以可以多次调用一个页面请求。 另外PHP会话在redis上。 我想问:我可以创build一个持久连接到PHP的redis的? 一个用于所有请求的连接。 – 我应该使用全局PHPvariables作为Redis连接,不同的function使用,而不是创build一个新的连接到每个function的redis? – 我读过关于Nginx的代理redis请求“redis_pass” – 这只会连接一次,代理请求通过? 这会是一个更好的解决scheme吗? 任何其他解决scheme 只是寻找一个明智的方式来减less来自PHP的redis连接的数量。 (注意:使用PHP 7.0.6)。 谢谢:)亚当 编辑:我注意到你也可以通过Nginx获得你的PHP会话数据Redis – 这也会减less连接 – 我想是的: 我怎么能从Redis的价值,并把它放在一个variables在NGiNX?