【问题标题】:Redis. Php Cache + Php Session雷迪斯。 Php 缓存 + Php 会话
【发布时间】:2015-04-09 15:58:52
【问题描述】:

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

我有很多问题:

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

2)“flushall”同时删除缓存和会话(会话不应被删除)

3) 不推荐使用多数据库功能,所以我可能不会使用“flashdb”

4)按模式(“ENTITY_CACHE:*”)获取所有键,然后删除每个键 - 对我来说这是不好的做法,这些键的数量可能超过一百万......

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

我更喜欢的唯一解决方案是: 使用多个 Redis 实例,为 Session 和 Cache 分开实例。但我不确定这是否是一个好的解决方案

你能给我一些建议吗?

【问题讨论】:

  • 出于好奇,你在redis中缓存一百万个什么?
  • 一般来说,缓存意味着大量的条目,我使用ZF2 Cache Storage,它不提供访问RedisClient实例的权限,它是受保护的属性

标签: php session caching redis


【解决方案1】:

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

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

这有帮助吗?

【讨论】:

  • 这是肯定的答案。缓存和分贝需要区别对待,这样做需要单独的实例
猜你喜欢
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 2012-06-12
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多