文档章节

让php Session 存入 redis 配置方法

党程V
 党程V
发布于 2015/01/30 10:23
字数 674
阅读 1.6W
收藏 21
  • 首先要做的就是安装redis 

安装方法:http://redis.io/download

Installation
Download, extract and compile Redis with:
$ wget http://download.redis.io/releases/redis-2.8.19.tar.gz
$ tar xzf redis-2.8.19.tar.gz
$ cd redis-2.8.19
$ make
The binaries that are now compiled are available in the src directory. Run Redis with:
$ src/redis-server
You can interact with Redis using the built-in client:
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

  • 然后是安装phpredis扩展 redis.so

安装方法参考:http://www.lecloud.net/post/3378834922/install-redis-php-extension-phpredis-with

/////////////////////////////
//以下代码为参考网站安装方法,请根据自己的实际安装位置自由调整,
/////////////////////////////
cd /usr/local
sudo mkdir src
cd /usr/local/src
sudo mkdir phpredis-build
cd phpredis-build
sudo git clone --depth 1 git://github.com/owlient/phpredis.git
cd phpredis
sudo phpize
sudo ./configure
sudo make
sudo make install

cd /usr/local/lib/php5/
sudo gedit php.ini
如果没有配置 extension_dir 的话请配置到你的extension的路径
cp redis.so /usr/local/lib/php5/extension/
加入一行: extension = redis.so 
重启nginx 和 php-fpm 就输出phpinfo 就能看到redis 扩展安装完成
  • 设置php.ini

找到; session.save_handler = files这一行 ,修改为 session.save_handler = redis,把原来的session存储方式改微redis方式这样会提高速度,原因是redis是在内存读取必然比在文件读取要快一些

找到; session.save_path = "/tmp"这一行 ,修改为 session.save_path = "tcp://127.0.0.1:8888",这是指向了本地的tcp服务,这个服务一会是由我们的redis启动

重启nginx 和 php-fpm 就输出phpinfo 就能看到session 保存方式和路径发生了改变

  • 启动redis服务

redis-server --port 8888 &
  • 编写php代码

<?php 
header("Content-type:text/html;charset=utf-8");
session_start();//这个很重要

$_SESSION['test_session']= @array('name' =>'fanqie' , 'ccc'=>'hello redis ');

$redis = new redis();
$redis->connect('127.0.0.1', 8888);
echo 'sessionid>>>>>>> PHPREDIS_SESSION:' . session_id();
echo '<br/>';
echo '<br/>';
//redis用session_id作为key并且是以string的形式存储
echo '通过php用redis获取>>>>>>>'.$redis->get('PHPREDIS_SESSION:' . session_id());
echo '<br/>';
echo '<br/>';
echo '通过php用session获取>>>>>>><br/>';
echo '<pre>';
var_dump($_SESSION['test_session']);
echo '</pre>';
  • 页面输出,我们可以看出我们已经成功存储并且通过redis成功获取到了存储的值

sessionid>>>>>>> PHPREDIS_SESSION:fmd75d3dfrlkp43eh567f7dsi5

通过php用redis获取>>>>>>>test_session|a:2:{s:4:"name";s:6:"fanqie";s:3:"ccc";s:12:"hello redis ";}

通过php用session获取>>>>>>>
array(2) {
  ["name"]=>
  string(6) "fanqie"
  ["ccc"]=>
  string(12) "hello redis "
}
  • 使用redis客户端查看在redis库中已经存储可以查询到hello redis 这条记录了

dangcheng@dangcheng-pc:~$ redis-cli -p 8888
127.0.0.1:8888> select 0
OK
127.0.0.1:8888> keys *
1) "PHPREDIS_SESSION:fmd75d3dfrlkp43eh567f7dsi5"
127.0.0.1:8888> get PHPREDIS_SESSION:fmd75d3dfrlkp43eh567f7dsi5
"test_session|a:2:{s:4:\"name\";s:6:\"fanqie\";s:3:\"ccc\";s:12:\"hello redis \";}"
127.0.0.1:8888>


© 著作权归作者所有

党程V
粉丝 5
博文 21
码字总数 9544
作品 0
西安
CTO(技术副总裁)
私信 提问
加载中

评论(6)

剑衣清风
剑衣清风
哦,那个解决了,原来是phpredis版本问题
剑衣清风
剑衣清风

引用来自“剑衣清风”的评论

如果redis配置了密码怎么弄呢

引用来自“党程”的评论

session.save_path = "tcp://127.0.0.1:8888?auth=pwd"
配置了之后,报这个错误了 Warning: Unknown: Failed to write session data (redis). Please verify that the current setting of session.save_path is correct (tcp://127.0.0.1:6379?auth=test) in Unknown on line 0
党程V
党程V 博主

引用来自“剑衣清风”的评论

如果redis配置了密码怎么弄呢
session.save_path = "tcp://127.0.0.1:8888?auth=pwd"
剑衣清风
剑衣清风
如果redis配置了密码怎么弄呢
党程V
党程V 博主

引用来自“三碗粥”的评论

php还挺方便;
是啊 php的各种解决方案还挺很好用的
JPer
JPer
php还挺方便;
PHP中使用Redis接管文件存储Session详解

前言 php默认使用文件存储session,如果并发量大,效率会非常低。而redis对高并发的支持非常好,可以利用redis替换文件来存储session。 最近就遇到了这个问题,之前找了网上的一套直播系统给...

开元中国2015
2018/12/04
73
0
Laravel5.3之Session源码解析(下)

说明:在中篇中学习了session的CRUD增删改查操作,本篇主要学习关闭session的相关源码。实际上,在Laravel5.3中关闭session主要包括两个过程:保存当前URL到session介质中;在Response Head...

botkenni
2016/11/19
105
0
PHP 实现Session入库/存入redis

对于大访问量的站点使用默认的Session 并不合适,我们可以将其存入数据库、或者使用Redis KEY-VALUE数据存储方案 首先新建一个session表 Mysql 的memory引擎采用内存表,所有数据存储在内存,...

eatnothing
2015/11/10
1.7K
8
Laravel 5.3 单用户登录的简单实现

需求 一个用户不能重复登录. 后登录者可以踢掉前者. 设计思路: 核心概念 流程描述 用户登录的时候使用用户IP+用户表主键+Unix时间戳组成的字符串, 经过md5运算生成一个singleToken 字符串. 并...

小金子
2019/09/29
0
0
彻底弄清楚session是什么?

前言: 今天就来彻底的学一些session是个啥东西,我罗列了几个需要知道的要点: 1.session 是啥? 2.怎么保存的? 3.如何运行? 4.有生命周期吗? 5.关闭浏览器会过期吗? 6.redis代替文件存...

eatnothing
2016/06/10
232
0

没有更多内容

加载失败,请刷新页面

加载更多

java关键字 —— new、this、static

  java关键字,也叫保留字(50个),是java有特殊意义的标识符,不能用作参数名、变量名、方法名、类名、包名等。   现在我们讲讲其中三个关键字的使用吧~~~ 一、new关键字 1. 用途:新建...

osc_s2b5kacl
4分钟前
5
0
java 集合框架的工具类Collections

sort(),max(),binarySearch(),fill() public class CollectionsDemo { public static void main(String[] args) { replaceAllDemo(); } public static void replaceAll......

osc_r9yyhhqz
5分钟前
3
0
创龙基于Xilinx Kintex-7系列高性价比FPGA开发板散热风扇接口、SATA接口

处理器 Xilinx Kintex-7系列FPGA处理器,芯片型号为XC7K325T-2FFG676I,兼容XC7K160T/410T-2FFG676I,高达326K逻辑单元,840个DSP Slice,硬件如下图: 散热风扇接口 开发板引出1个散热风扇接...

Tronlong创龙
6分钟前
15
0
【经验分享】学习Java的好书有哪些?Java书籍清单

Java书籍是程序员学习提升技能的重要学习渠道,通过书籍Java程序员可以学习当前流行、重要的相关技能。经典的书经受时间的考验,随着岁月的流逝变得越来越重要,让我们不断的学习和进步。 为...

osc_b1kaj6np
6分钟前
12
0
java Collections的reverseOrder(),SynList()

Collections的reverseOrder(比较器)返回相反的比较器,可以逆转比较器。 SynList()可以让非同步变成同步,底层实现synchronized(){}。 swap交换元素位置。 Collections.shuffle()随机重新排序...

osc_2gkfj43j
7分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部