我一开始正考虑使用memcached来存储会话而不是mySQL,这似乎是一个好主意.
当涉及到使用memcached服务器的故障转移部分时,如果memcached将脱机,我的会话将停止工作有点令人担忧.它肯定会影响我的用户.
我们已经使用了一些技术来减少故障转移,包括在停机时使用可用于补偿的服务器池,在服务器池中使用分片/一致性散列等等.我们还会做一些优雅的降级,告诉用户出现了问题,欢迎他们再次登录,如果由于memcached服务器故障转移而被踢出.
那么在memcached服务器上存储会话时,人们通常如何处理这些问题呢?
首先,如果你只在memcache中放一些东西,你应该可以丢失它.对于其他一切,都有持久的存储空间.
其次,memcached不会经常失败.没有像磁盘盘片那样的移动部件.我失去会话的唯一一次是由于重新启动内核升级.但由于第一点,失去这些会议并不是什么大问题.
因此,要直接回答您的问题,如果数据可以丢失,只将其存储在内存缓存会话中即可.如果不能丢失,请将其存储在持久存储中,并将其缓存在内存缓存中以提高速度.