memcached使用内存保存session

对于登陆注册量比较大的网站,session直接写入文件。对于登陆访问量比较大的网站session本身就比较多,如果提高session的读取速度可以提高访问速度和减轻服务器一定的负担。而memcached可以做到这一点。修改的主要有两个参数:session.save_handler为memcache和session.save_path为tcp://ip:port

方式一:修改php.ini的配置文件

方式二:通过ini_set()函数设置对本页面有效的session配置ini_set(“session.save_handler”,“memcache”)ini_set("session.save_path","tcp://ip:port")

memcached和session的区别:

在读写速度上会比文件快很多,而且在多个服务器需要共用  session  时会比较方便,将 这些服务器都配置成使用同一组  memcached  服务器就可以,减少了额外的工作量。  其缺点是  session  数据都保存在  memory  中,一旦当机,数据将会丢失。但对  session  数据来 说并不是严重的问题,其本身就是临时性数据。 session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题。

当把memcached服务器放在公网上,就不安全了,可以放置在局域网中,通过防火墙拒绝对memcached服务的端口的直接请求,必须通过Apache服务器间接地访问memcached的服务。
当然需要注意的地方有::

1、memcache的内存应该足够大,这样不会出现用户session从Cache中被清除的问题(可以关闭memcached的对象退出机制)。
2、如果session的读取比写入要多很多,可以在memcache前再加一个Oscache等本地缓存,减少对memcache的读操作,从而减小网络开销,提高性能。
3、如果用户非常多,可以使用memcached组,通过set方法中带hashCode,插入到某个memcached服务器//暂时不能理解

对于session的清除有几种方案:

(1)可以在凌晨人最少的时候,对memcached做一次清空。(简单)

(2)保存在缓存中的对象设置一个失效时间,通过过滤器获取sessionId的值,定期刷新memcached中的对象.长时间没有被刷新的对象自动被清除.(相对复杂,消耗资源)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章