问题标签 [predis]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 从 Predis 订阅函数中触发 Laravel 事件
我有一个 Laravel php 应用程序和一个 NodeJS 客户端。我的客户端发生了一些事情,我想更新我的 php 后端,所以我向 Redis 频道发布了一条消息,在我的 Laravel 应用程序中,我有一个 Redis 订阅者在该频道上监听消息。
理想情况下,我想在收到消息时触发一个事件,但我收到此错误
[Predis\Response\ServerException] 仅 ERR (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT 在此上下文中允许
我可以在订阅者内部做我需要的事情,比如更新存储库等……但我无法触发 Laravel 事件,这是在这里做的有意义的事情。
redis - 通过 Sentinel 连接到 Redis 集群
我有一个由三个主节点和三个从节点组成的 redis 集群。我还有三台 Sentinel 服务器(每台在单独的机器上)监控 redis 集群。使用 Predis,我可以通过单个主节点的 IP/端口连接到集群。但我想知道我是否可以通过 Sentinel IP/端口将 Predis 连接到集群?
php - Predis + Elasticache 自动故障转移配置
我正在针对 AWS 上的 Elasticache 集群运行 Predis,该集群有一个写入主机和两个读取副本。Predis 的主/从复制配置大致如下..
我正在配置自动故障转移恢复。Elasticache 通过提升读取从属节点和更新主节点主机名的 dns 记录来支持主节点故障恢复。在失败的情况下,Predis 不应该使用上述配置,因为 master 的主机名不会改变。
但是,使用上述配置,我会遇到问题。我会有效地从三节点集群转到两节点集群,直到有人干预(或编写了一些英雄代码。)
为了明确我的观点..在失败之前..
失败后...(node1 失败,node2 被提升)
这在有限的时间内很好,但理想情况下我希望它能够自行解决。
恢复完成后,elasticache 会将 node1 恢复为只读副本。我希望它一旦可用就开始作为只读副本工作。
我在想我可以通过像这样配置 Predis 来解决这个问题..
...其中 REDIS_SLAVE03 指向与 REDIS_MASTER 相同的底层实例,但使用在失败事件中不会更改的主机名。实际上,所有节点在任何时候都充当读取从属节点,并且在 Predis 不知情的情况下,指向主节点的写入“指针”被转移。
所以有几个问题...
1) 当从站变得无响应时,Predis 的行为是什么?它会忽略该配置并将读取路由到其他响应式从站吗?
2)主redis实例会获得双倍的读取操作吗?(大概答案是肯定的)
3)这种方法是否存在我遗漏的缺陷?
4)更好的主意?
任何和所有的建议表示赞赏。
php - How to pass in options for composer?
I am trying to get this package https://github.com/nrk/predis-async and the instructions says to do: composer require predis/predis-async. I tried downloading the options phpiredis extension but when I run composer it says:
Do I need to add an extension to the php ini file (if so how do I do this)?
If that doesnt work the owner the github says "pass in ['phpiredis' => false] in the array of client options" how do I pass in options with composer?
javascript - 用javascript直接连接redis?
这是指 3 年前在 Stackoverflow 上发表的一篇文章(使用(客户端)javascript 直接连接到 Redis?)。关于如何从 Javascript 调用 redis pub/sub 是否有任何更新?(除了 webdis 选项,所选答案显示)。我有一个能够从 php 订阅的 redis php 脚本,但我无法从 Javascript 调用并获得响应。我试过用 jquery 做一个 ajax get 并且它超时了。任何更新都会有所帮助。
redis - 如果我在主 redis 实例上运行长事务或 Lua 脚本,它会阻塞只读从属吗
我希望能够访问我的主 Redis 服务器密钥的最新副本。它不必完全是最新的,因为我将轮询只读副本,但我不希望我在主实例上运行的事务和 Lua 脚本在我通过密钥扫描时阻塞只读实例在我的只读实例上。
任何人都可以确认/否认这种行为吗?
redis - 将管道与 redis-cluster 一起使用时出现 Predis 错误
我尝试在我的 redis-cluster 中添加一个键值对,并在一个管道中为新键设置过期。每次我收到密钥被移动的错误时,但我认为 Predis 应该遵循 MOVED 语句,就像没有流水线一样。
是不是可以在管道中进行过期调用?我正在使用 Predis 1.0.2-dev 和 redis_version: 3.0.2
这有效:
这不起作用:
我收到此错误:
编辑:似乎流水线在 redis-cluster 上不起作用。当我删除 expire 调用并且在管道中只有 set 调用时,我得到了同样的错误。
php - Redis 扫描跳过键
我正在使用 predis(如果有任何区别,可以使用 laravel)php 客户端与 Redis 一起使用。
我需要从 Redis 中获取与特定前缀匹配的所有键,我这样做是这样的:
完成这些键的工作后,重复操作 - 我再次循环输入这些键。我注意到经过几次迭代后,一些键不包含在 $keys 数组中。
最奇怪的是,消失的键永远不会出现在下一次迭代中。重新启动 php 进程(它是一个守护进程)解决了这个问题。
我将 Redis 3.0.2 与 Predis 1.0 和 PHP 5.4 一起使用
PS 在键的循环中,我更改了其中一些键的值。但是,我不会删除任何键。
php - 无法从 Laravel Redis PUB/SUB 订阅者中触发 Laravel 事件。[仅在我与队列交互时发生]
这似乎只在我使用队列时发生。
我有一个 Node 发布者和一个 Laravel 订阅者。Node 发布者发送一条消息,Laravel 订阅者接收它。
当我收到此消息时,我想派遣工作。如果我正在与队列交互,我会收到此错误。
“[Predis\Response\ServerException] 仅 ERR (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT 在此上下文中允许”
我在这里缺少什么吗?好像我大部分时间都在那里。我唯一能想到的是 Laravel 订阅者必须使用与默认连接不同的连接,这与队列使用的连接相同。
任何帮助都非常感谢。
redis - 是否有任何工具可以监控对 Redshift 数据库的传入请求?
我已经实现了 predis 服务器。我无法确定我的应用程序是否每次都在 ping 数据库,或者它是否正在从 predis 获取数据。有什么方法可以检查对 Redshift 实例的传入请求?还是测试predis?