浅析PHP分布式中Redis实现Session的方法

本文介绍的是PHP分布式中Redis实现Session的方法,下面话不多说,直接先来看两个方法是什么

方法一:

找到配置文件php.ini,修改为下面内容,保存并重启服务

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

方法二:

直接在代码中加入以下内容:

ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://127.0.0.1:6379");

注:如果配置文件redis.conf里设置了连接密码requirepass,save_path需要这样写tcp://127.0.0.1:6379?auth=authpwd ,否则保存session的时候会报错。

测试:

<?php
//ini_set("session.save_handler", "redis");
//ini_set("session.save_path", "tcp://127.0.0.1:6379");

session_start();

//存入session
$_SESSION['class'] = array('name' => 'toefl', 'num' => 8);

//连接redis
$redis = new redis();
$redis->connect('127.0.0.1', 6379);

//检查session_id
echo 'session_id:' . session_id() . '<br/>';

//redis存入的session(redis用session_id作为key,以string的形式存储)
echo 'redis_session:' . $redis->get('PHPREDIS_SESSION:' . session_id()) . '<br/>';

//php获取session值
echo 'php_session:' . json_encode($_SESSION['class']);

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • ThinkPHP自定义Redis处理SESSION的实现方法

    本文实例讲述了ThinkPHP自定义Redis处理SESSION的实现方法.分享给大家供大家参考,具体如下: 日常中我们都会使用到session来保存用户登录的信息,常用的session的保存方式有:文件保存(默认).数据库保存.Redis保存.memcached等.这里主要记录一下在用ThinkPHP处理session用Redis来保存session的用法. 1.在配置项中定义: 'SESSION_TYPE' => 'Redis', //session保存类型 'SESSION_PREFIX'

  • php+redis实现多台服务器内网存储session并读取示例

    大型网站由于大并发的问题会导致系统出现诡异的崩溃性问题这着实让人很是蛋疼,首先考虑的就是负载均衡服务器来处理这个,当然数据库的性能也是非常非常重要的,今天就说下在负载均衡情况下对于session这个问题如何处理,说实话不处理session其实也是可以的,但是在实际的情况中会出现一些让用户体验非常蛋疼的问题,比如购物下单的时候负载均衡调配服务器来回切换的过程中session丢失了,这个时候就尴尬了,用户就会郁闷我擦这什么鬼,于是乎各种担心就会出现,这破网站是不是有什么安全问题等等.下面就来说说这个

  • PHP使用Redis替代文件存储Session的方法

    本文实例讲述了PHP使用Redis替代文件存储Session的方法.分享给大家供大家参考,具体如下: PHP默认使用文件存储session,如果并发量大,效率非常低.而Redis对高并发的支持非常好,所以,可以使用redis替代文件存储session. 这里,介绍下php的session_set_save_handler 函数的作用和使用方法.该函数定义用户级session保存函数(如打开.关闭.写入等). 原型如下: bool session_set_save_hanler(callback

  • redis 替代php文件存储session的实例

    redis 替代php文件存储session的实例 查看实例之前请先了解   PHP session_set_save_handler函数的用法 定义个SessionManager  类 class SessionManager { private $redis; public function __construct(){ $this->redis = new Redis(); $this->redis->connect('192.168.0.102', 6379); $retval

  • PHP实现Session入库/存入redis的方法

    对于大访问量的站点使用默认的Session 并不合适,我们可以将其存入数据库.或者使用Redis KEY-VALUE数据存储方案 首先新建一个session表 CREATE TABLE `sessions` ( `sid` char(40) NOT NULL, `updatetime` int(20) NOT NULL, `data` varchar(200) NOT NULL, UNIQUE KEY `sid` (`sid`) USING HASH ) ENGINE=MEMORY DEFAUL

  • 详解PHP使用Redis存储session时的一个Warning定位

    1. 问题现象 系统页面刷新的时候,偶尔会报错下面的Warnning,但是不经常出现: Warning: Unknown: Failed to write session data (Redis). Please verify that the current setting of session.save_path is correct (tcp://x.x.x.x:6379?auth=yyy) in Unknown on line 0 看网络有人说是redis版本的问题.但是没有具体结论,那

  • php基于redis处理session的方法

    一个基于redis的处理session的方法,如下. <?php class Session_custom { private $redis; // redis实例 private $prefix = 'sess_'; // session_id前缀 // 会话开始时,会执行该方法,连接redis服务器 public function open($path, $name) { $this->redis = new Redis(); return $this->redis->conn

  • php Session存储到Redis的方法

    当然要写先安装php的扩展,可参考这篇文章:Redis及PHP扩展安装修改php.ini的设置 复制代码 代码如下: session.save_handler = redissession.save_path = "tcp://127.0.0.1:6379″修改后重启php-fpm或nginx,phpinfo() session redis如果不想修改php.ini可这样 复制代码 代码如下: ini_set("session.save_handler","redi

  • php实现Session存储到Redis

    对于大访问量的站点使用默认的Session 并不合适,我们可以将其存入数据库.或者使用Redis KEY-VALUE数据存储方案 首先新建一个session表 CREATE TABLE `sessions` ( `sid` char(40) NOT NULL, `updatetime` int(20) NOT NULL, `data` varchar(200) NOT NULL, UNIQUE KEY `sid` (`sid`) USING HASH ) ENGINE=MEMORY DEFAUL

  • 浅析PHP分布式中Redis实现Session的方法

    本文介绍的是PHP分布式中Redis实现Session的方法,下面话不多说,直接先来看两个方法是什么 方法一: 找到配置文件php.ini,修改为下面内容,保存并重启服务 session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379" 方法二: 直接在代码中加入以下内容: ini_set("session.save_handler", "redis"); ini_se

  • node.js使用redis储存session的方法

    转储session的原因 网上有许多session需要用数据库储存的原因,对我来说原因很简单,仅仅只是node的生产环境不允许将session存到服务器的内存中.会报一个内存溢出的风险警告.所以我决定将session转储到数据库中.而用于存储session的方案有许多,这里由于本人比较菜,所以选择了主流的redis来保存我的session状态 安装redis 首先既然要使用redis,那么第一步当然是将redis安装到服务器上,服务器一般都是linux的操作系统. 所以下面是linux的安装步骤

  • Redis快速实现分布式session的方法详解

    目录 前言 Spring Security Apache Shiro Session作用 spring-session 支持功能 分布式seesion实战 步骤1:依赖包 步骤2:配置文件 步骤3:实现逻辑 步骤4:编写session拦截器 步骤5:把拦截器注入到拦截器链中 步骤6:测试 前言 我们在开发一个项目时通常需要登录认证,常用的登录认证技术实现框架有Spring Security和shiro Spring Security Spring Security是一个功能强大且高度可定制的身份

  • SpringBoot集成redis与session实现分布式单点登录

    目录 单点登录 SSO(Single Sign On) 什么是单点登录? 实现方式 开发技术 单点登录实现流程 实现案例 看效果 前言: 由于考虑到cookie的安全性问题,就有了下面这个版本的sso 单点登录 SSO(Single Sign On) 什么是单点登录? 单点登录的英文名叫做:Single Sign On(简称SSO),指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的系统.简而言之,多个系统,统一登陆. 我们可以这样理解,在一个服务模块登录后,其他模块无

  • 详解Asp.net Core 使用Redis存储Session

    前言 Asp.net Core 改变了之前的封闭,现在开源且开放,下面我们来用Redis存储Session来做一个简单的测试,或者叫做中间件(middleware). 对于Session来说褒贬不一,很多人直接说不要用,也有很多人在用,这个也没有绝对的这义,个人认为只要不影什么且又可以方便实现的东西是可以用的,现在不对可不可用做表态,我们只关心实现. 类库引用 这个相对于之前的.net是方便了不少,需要在project.json中的dependencies节点中添加如下内容: "StackExc

  • Java中Cookie和Session的那些事儿

    Cookie和Session都是为了保持用户的访问状态,一方面为了方便业务实现,另一方面为了简化服务端的程序设计,提高访问性能.Cookie是客户端(也就是浏览器端)的技术,设置了Cookie之后,每次访问服务端,请求中都会带上Cookie:Session是服务端技术,在服务端存储用户的访问信息. 使用Cookie传递信息,随着Cookie个数增多和访问量增大,它占用的带宽会越来越大:使用Session保存信息,最大的弱点就是不容易在多台服务器之间共享. 1 Cookie 通俗地讲,当用户使用H

  • spring boot与redis 实现session共享教程

    如果大家对spring boot不是很了解,大家可以参考下面两篇文章. Spring Boot 快速入门教程 Spring Boot 快速入门指南 这次带来的是spring boot + redis 实现session共享的教程. 在spring boot的文档中,告诉我们添加@EnableRedisHttpSession来开启spring session支持,配置如下: @Configuration @EnableRedisHttpSession public class RedisSessi

  • SpringBoot+SpringSession+Redis实现session共享及唯一登录示例

    最近在学习springboot,session这个点一直困扰了我好久,今天把这些天踩的坑分享出来吧,希望能帮助更多的人. 一.pom.xml配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency>

随机推荐