网站首页学无止境PHP
php session 存放在redis
发布时间:2016-02-29 11:37:32编辑:songlin阅读(112)
- #Installation
- $ mkdir -p /root/redis
- $ cd /root/redis
- #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:
- # 后台启动redis
- $ src/redis-server /root/redis/redis-2.8.19/redis.conf &
- #You can interact with Redis using the built-in client:
- $ src/redis-cli
- redis> set polin wangsonglin.cn
- OK
- redis> get polin
- "wangsonglin.cn"
- #
- #以下代码为参考网站安装方法,请根据自己的实际安装位置自由调整,
- #
- cd /usr/local
- mkdir src
- cd /usr/local/src
- mkdir phpredis-build
- cd phpredis-build
- git clone --depth 1 git://github.com/owlient/phpredis.git
- # 此处可能会报错 bash: git: command not found...
- yum install -y git #解决上方 git : command not found 可省略
- cd phpredis
- sudo phpize
- sudo ./configure
- sudo make
- sudo make install
- cd /usr/local/lib/php5/
- gedit php.ini
- #如果没有配置 extension_dir 的话请配置到你的extension的路径
- cp redis.so /usr/local/lib/php5/extension/
- # 在php.ini中添加一行
- extension = redis.so
- # 重启nginx 和 php-fpm 就输出phpinfo 就能看到redis 扩展安装完成
- <?php
- session_start();
- var_dump(session_id());
- string(26) "emq5ksb4sagnc63qfuk6bpjom2"
- [root@localhost ~]# /root/redis/redis-2.8.19/src/redis-cli
- 127.0.0.1:6379> keys *
- 1) "songlin"
- 127.0.0.1:6379> keys *
- 1) "PHPREDIS_SESSION:emq5ksb4sagnc63qfuk6bpjom2"
- 2) "songlin"
- 127.0.0.1:6379>
- <?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>';
- 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 "
- }
- 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>
最近公司服务器压力山大,经组织一研究,要搞双机。可是双机面临这两个问题。1.文件共享问题;2.session共享问题;借鉴oschina.net的一篇博文 在加上自己的操作过程,希望能帮助一些人。
1.首先要做的就是安装redis
2.然后是安装phpredis扩展 redis.so
安装方法参考:http://www.lecloud.net/post/3378834922/install-redis-php-extension-phpredis-with
设置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:6379",这是指向了本地的tcp服务,这个服务一会是由我们的redis启动
重启nginx 和 php-fpm 就输出phpinfo 就能看到session 保存方式和路径发生了改变
3.编写php代码
页面输出结果:
使用redis客户端查看在redis库
下面是原博文的php代码,相对来说更详细一点。
页面输出,我们可以看出我们已经成功存储并且通过redis成功获取到了存储的值
使用redis客户端查看在redis库中已经存储可以查询到hello redis 这条记录了
本文来源地址:http://my.oschina.net/youa/blog/373500