首页 > 解决方案 > 使用 Symfony 运行自定义 Redis 命令

问题描述

RedisAdapter在一个项目中使用 Symfony 来处理缓存的值,它已经在项目内部得到了深入的使用。

现在我想添加新的 redis 键来存储一些数字,这些数字可以经常更新。所以我想使用INCRDECRredis 命令来快速完成它。

但是RedisAdapter似乎不允许自定义 redis 命令,您只能获取、检查密钥存在、删除和保存密钥。当然,我可以获取计数值,在 php 中将其递增,然后再次保存,但考虑到在 redis 中已经为此实现了一个解决方案,它并不是很优化。

是否可以运行自定义 redis 命令,同时保留 Symfony 提供的 redis 抽象层?

标签: symfonyredis

解决方案


不幸的是 Symfony 的 redis 适配器不允许这个功能,因为它不会在 symfony 的其他缓存适配器之间共享。您需要访问适配器正在使用的底层 redis 客户端,并使用它来进行您想要的调用。以 predis 为例:

$predis = new Predis\Client(/* Configuration */);

$predis->incr($my_key);

显然,这远非理想,因为现在人们正在将他们的应用程序与 Redis 以及正在使用的任何 Redis 客户端绑定在一起。


推荐阅读