题目:
如何实现多台服务器共用SESSION?
回答:
方案将SESSION保存到数据库,不同主机可以去读SESSION数据库来判断是否登录在线
反问:
如果并发访问很大的情况下,如何保证SESSION正常读取?
这是一个面试题,回答了使用数据库来保存SESSION的时候,面试官不满意,我自己的思路是将这个题目思考为多个分站如何公用SESSION,比如顶级域和多子域。所以为了同步方便,想到的是数据库存放,但是如何处理并发量很高的情况?(弃用DB存放SESSION换其他方案?)
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
sessionid之类的客户端标志,做一致性哈希,保证每次访问到同一台机器,对n个客户端来说,祈祷分流作用,这样行不行.
要琢磨考官问的什么,然后给出"正确"答案,真挺难的
的确,redis,memcache是不二的选择,原因是他们是内存数据库,硬盘数据库的瓶颈就是硬盘Io。两者之间我比较推荐redis,因为它支持的数据格式多,而且扩展强大,比如持久化。
用memcached。
session不是持久化存储,跟rdbs的差异还是挺大的,但跟memcached很像。
至于sessionid,可以用应用里的uid来代替,需要手动管理。
memcache 是最佳选择 用memcache实现session的功能。
redis可以存储啊。
SESSION同步 一致性 单点登录问题
方案一:存数据库(PHP SESSION默认有悲观锁,会串行执行请求)
方案二:存缓存+分布式+主从(复制从节点)