Redis 分布式缓存,是如何实现多台服务器SESSION 实时共享的

现在提到多服务器的共享session,几乎都是回答用redis。
对于redis实现几台服务器共享session,不是很理解。
假如一个网站分别部署在A B C 3 台服务器上,他们的代码都是相同的。用户在访问的过程中是随机切换到其他服务器,使用redis来共享session,那么是这3台服务器是如何实现session 实时共享的?

首先要明确session和cookie的区别。浏览器端存的是cookie每次浏览器发请求到服务端是http 报文头是会自动加上你的cookie信息的。服务端拿着用户的cookie作为key去存储里找对应的value(session).

同一域名下的网站的cookie都是一样的。所以无论几台服务器,无路请求分配到哪一台服务器上同一用户的cookie是
不变的。也就是说cookie对应的session也是唯一的。

只要保证多台业务服务器访问同一个redis服务器(或集群)就行了。

将REDIS 另外的部署到第四台服务器D, A B C 三台服务器上的PHP配置连接的REDIS是这台D服务器。那么就实现了统一的SESSION 实时共享,

PHP设置Session共享(php.ini 配置redis)

如果你使用的是PHP那么恭喜你,配置非常的简单。PHP通过两行配置就可以把Session存放在Memcached或者Redis中,当然你要提前配置好他们。修改php.ini:

    session.save_handler = memcache
    session.save_path = "tcp://192.168.56.11:11211"

  

使用Redis存储Session

session.save_handler = redis     # 默认的设置是file,这里改成redis
session.save_path = "tcp://192.168.2.11:6379?auth=passwd" # 这里填redis的连接配置参数
;session.save_path = "tcp://192.168.2.11:6379"  # 如果redis不带密码,则使用这种配置
;session.save_path = "tcp://127.0.0.1:6379"  # 如果redis不带密码,则使用这种配置

  

上面这个redis的session_save_path的路径可以写成具体的一个ip地址。这样就实现session共享了。

猜你喜欢

转载自www.cnblogs.com/hcfinal/p/11043361.html