redis 会话共享,如何实现session共享,用redis如何实现?

用户投稿 61 0

关于“redis_php_session共享”的问题,小编就整理了【3】个相关介绍“redis_php_session共享”的解答:

如何实现session共享,用redis如何实现?

1.是否应该使用Session?如果需要保持会话,多个页面跳转需要上下文信息,那么Session实现比较合适,也就需要Session2.Session产生的问题:session信息需要保存在服务器中而且需要保存一个较长的时间,对访问量较大的网站会产生巨大的内存消耗。所以最后能筛选比较重要的有效的回话保存。3.如果要使用的画,应该如何设计整个系统?

大体上可以考虑分情况进行,比如分为登录和未登录状态,未登录状态使用cookie保存回话信息,登录状态使用Session,切换状态时把cookies清空信息转移到Session中。

而由于访问量比较大的情况,势必会有多服务器的共享Session问题,这时候Session信息就应该保存在redis中,所有的服务器写入或获取Session都从redis中进行。

可使用Nginx反向代理服务器,实现高并发的负载均衡。

如何在多台web服务器上共享session?

一、将本该保存在web服务器磁盘上的session数据保存到cookie中

即用cookie会话机制替代session会话机制,将session数据保存到客户端浏览器的cookie中,这样同一个用户访问同一网站时,无论负载均衡到哪台web服务器,都不用再去服务器请求session数据,而直接获取客户端cookie中的session数据。如此,同一个用户的登录状态就不会丢失了。

但这样做,有三大弊端:

把session数据放到客户端的cookie中,一般都是重要数据(如用户id、昵称等),会存在安全问题,但可以将session数据加密后,再存放到cookie中,来降低安全风险。

浏览器对单个cookie的数据量大小限制为4K左右,因此会存在数据量的限制问题。

影响带宽性能,降低了页面的访问速度。在高访问量的情况下,用户每次请求时,都要将客户端cookie中的session数据发送到服务器,要占用较多的带宽,进而影响访问速度,服务器带宽成本增高。

二、将本该保存在web服务器磁盘上的session数据保存到MySQL数据库中

sessionid还是利用cookie机制存储到客户端,但session数据却存放在MySQL服务器上。(需要建立sessionid和session数据行的对应关系)

如果程序采取分布式,怎么样实现session共享?

既然采用分布式说明系统压力大,你要充分考虑session共享的必要性,分布式下主流的设计是无状态的架构设计。非得要session的话,方法也有,就是通过memcache或者redis之类的共享存储来共享session。

到此,以上就是小编对于“redis_php_session共享”的问题就介绍到这了,希望介绍关于“redis_php_session共享”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!