mySQL和memcached用于PHP会话?

web*_*bgr 5 php mysql session memcached

对于高流量网站,我们计划扩展以在HA设置中使用2个Web服务器.

我们需要解决的一个问题是PHP会话的管理.

显而易见的答案是将会话处理移动到DB这很容易,并且示例代码在互联网上广泛可用.

另一方面,我们知道memcached的好处,但是一旦memcached节点失败,该节点上的用户将丢失其会话.

因此,我们正在考虑实现一种设置,默认情况下会在memcached中处理会话,但也会在DB中编写.当我们得到一个memcached MISS时,我们会尝试从DB中检索它.

以上是否有意义并且您是否知道任何实施示例?

提前致谢

squ*_*rel 6

我向您介绍Dormando经常引用的解释,说明如何使用memcached缓存在MySQL中存储会话.在原来的LiveJournal后是比较罗嗦,但更彻底地解释了为什么存储的memcached会议仅是一个坏主意.

简而言之:

  • 首先从memcached读取会话数据,在缓存未命中时查看MySQL.
  • 在每次更新时将会话数据写入memcached.
  • 如果缓存数据尚未同步120秒左右,则只写入MySQL.
  • 运行定期脚本,检查MySQL是否有过期的会话.对于每个过期的会话,从memcached更新并仅使真正过期的会员到期.

  • 我有开发系统的经验,这些系统要求高可靠性,并且会让您大肆宣传.使用易失性缓存作为您关心的任何数据的唯一持久存储是在寻找麻烦. (4认同)
  • 也许您应该尝试更好地理解上下文和业务需求.仅Memcache就是我们会议的禁忌.我们根本不想为会话变量引入单点故障!后端具有持久存储的Memcache(作为缓存)非常适合我们的要求,我们已经启动并运行了基础架构.似乎Redis with Append-only文件可以实现类似的功能. (2认同)