把php session 会话保存到redis
php的session会话默认时以文件形式保存在php.ini配置文件设置的会话缓存目录,文件保存会话的效率很低,每当每个用户登录一次就会在服务器上生成一个唯一的session_id文件,当用户登录量达到几十万级别的时候,就会有几十万个文件在服务器生成,这时候磁盘的会话目录的IO读写会非常的慢,导致用户登录时程序会花费大量的时间在会话文件的读写上。当大量的用户登录时读写能力不够,导致的文件是会被第一个操作session的进程锁定,其他请求阻塞。请求会挂起在session_start()直到session文件解锁。这时候就需要优化登录慢的问题了。
由于锁定的session文件直到脚本执行结束或者session正常关闭才会解锁,为了防止大量的php请求(需要使用$_SESSION数据)被锁定,可以在写完session后马上关闭,这样就释放了锁。
//开启会话
session_start();
//写入会话
$_SESSION['is_login']=1;
//写入会话后关闭上一个会话文件的写入
session_write_close();
php session 会话写入到redis
redis数据时存储在计算机内存条中运行的,计算机的内存条的速写速度时硬盘的几十倍,所以如果把php session写入到redis缓存中,速度会提高很多。配置方法:
//方式一,在php脚本中设置更改php会话写入方式
<?php
ini_set("session.save_handler","redis");
ini_set("session.save_path","tcp://127.0.0.1:6379");
//如果有密码
ini_set("session.save_path","tcp://127.0.0.1:6379?auth=password");
?>
//修改php的配置文件php.ini
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
//如果有密码
session.save_path = "tcp://127.0.0.1:6379?auth=password"
把php session 会话保存到redis的更多相关文章
- [redis] session 保存到 redis 简单实现
参考资料: [session保存到redis简单实现]http://blog.csdn.net/ppt0501/article/details/46700221 [Redis学习]http://blo ...
- nodejs express session用法(含保存到redis)
普通用法: var express = require('express'); var session = require('express-session'); var app = express( ...
- 【redis,1】java操作redis: 将string、list、map、自己定义的对象保存到redis中
一.操作string .list .map 对象 1.引入jar: jedis-2.1.0.jar 2.代码 /** * @param args */ public s ...
- Redis使用场景一,查询出的数据保存到Redis中,下次查询的时候直接从Redis中拿到数据。不用和数据库进行交互。
maven使用: <!--redis jar包--> <dependency> <groupId>redis.clients</groupId> < ...
- scrapy实现自动抓取51job并分别保存到redis,mongo和mysql数据库中
项目简介 利用scrapy抓取51job上的python招聘信息,关键词为“python”,范围:全国 利用redis的set数据类型保存抓取过的url,现实避免重复抓取: 利用脚本实现每隔一段时间, ...
- Asp.net Session保存到Redis: 使用 RedisSessionStateProvider
Install-Package Microsoft.Web.RedisSessionStateProvider 依赖于: Dependencies StackExchange.Redis.Strong ...
- php session 保存到redis 实现session的共享
1.redis安装肯定都会了,就不介绍了. 2.核心代码
- Java微信公众号开发----定时获取access_token并保存到redis中
本人原本是想做微信公众号菜单的创建修改删除等操作的,但是发现需要access_token,通过阅读文档,发现文档要求有以下几点: 1.access_token 获取后有效期是2小时 2.access_ ...
- 基于redis实现tomcat的session会话保持 (转)
出处:https://cloud.tencent.com/developer/article/1402997 基于redis实现tomcat的session会话保持 在实际生产中,我们经常部署应用服务 ...
随机推荐
- Docker 为 ASP.NET Core Web 应用程序生成 Docker 映像,创建并运行多个容器
1.为 ASP.NET Core 应用程序生成 Docker 映像 下载这个事例项目:https://github.com/dotnet/dotnet-docker/tree/master/sampl ...
- JS DOM 操作 项目总结 【超链接】【数列】【span】
超链接 每次定义链接样式时务必确认定义的顺序,link--visited--hover-active,也就是我们常说到的LoVe HAte原则(大写字母就是它们的首字母). “爱恨原则”(Lo ...
- 使用commons-pool2实现FTP连接池
GitHub : https://github.com/jayknoxqu/ftp-pool 一. 连接池概述 频繁的建立和关闭连接,会极大的降低系统的性能,而连接池会在初始化的时候会创建一定 ...
- Spring Boot使用layui的字体图标时无法正常显示 解决办法
在html文件使用字体图标并且预览时正常,但是启动工程后显示不正常,浏览器调试界面显示字体文件无法decode: Failed to decode downloaded font: xxxxx 如图所 ...
- centos7下没有iptables
从centos7开始使用linux,之前版本的没有深入了解过,今天要开放个端口,需要有防火墙的相关操作,从网上查资料都是编辑/etc/sysconfig目录下面的iptables文件,可我进入这个文件 ...
- Java虚拟机 - 语法糖
[深入Java虚拟机]之六:Java语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家Peter.J.Landin发明的一个术语,指在计算机语言中添加的某种语法,这种语 ...
- C#中Main函数为什么要static
假设没有static关键字,那意味着需要用生成一个实例后才可以调用这个Main方法,而Main方法是程序入口点,你没有进入Main方法,自然无法生成一个实例,既然没有实例,那就无法调用Main函数,岂 ...
- Nodejs 使用特定版本的SSL/TLS协议版本
var options = { key: fs.readFileSync('./bin/privatekey.pem'), cert: fs.readFileSync('./bin/certifica ...
- RecyclerView 下拉刷新和加载更多
一.SwipeRefreshLayout实现下拉刷新 1.方法API: setOnRefreshListener(OnRefreshListener):添加下拉刷新监听器 setRefreshing( ...
- LeetCode 题解之Goat Latin
1.问题描述 2.问题分析 将句子拆分成单词,然后放入vector中,对每一个单词做改变,最后连成句子返回. 3.代码 string toGoatLatin(string S) { vector< ...