Redis.Php缓存+Php会话


Redis. Php Cache + Php Session

我使用Redis来存储会话和缓存,我想实现"清除缓存"功能。

我遇到了很多问题:

1) Redis无法按模式("ENTITY_ACHE:*")删除

2) "flushall"同时删除缓存和会话(不应删除会话)

3) 多数据库功能已弃用,因此我可能不会使用"flashdb"

4) 按模式("ENTITY_ACHE:*")获取所有密钥,然后删除每个密钥-对我来说,这是一种糟糕的做法,这些密钥的数量可能超过一百万。。。

$redis->delete($redis->keys('ENTITY_CACHE:*'))

我唯一喜欢的解决方案是:使用Redis的多个实例,会话和缓存分别使用实例。但我不确定这是否是一个好的解决方案

你能给我一些建议吗?

但我不确定这是否是一个好的解决方案

我觉得是的。我在不同的实例上分离Session和Cache,因为它允许我为每个实例指定不同的内存限制(maxmemory),并且驱逐更可控(它使用LRU算法)。此外,持久性设置似乎是实例范围的。请注意,应避免使用没有会话锁定的会话存储。我强烈建议使用SncRedisBundle,因为它实现了锁定(PHP的Redis扩展没有)。

这有帮助吗?