感謝大陸網友提供!!

 

session可以存放在文件中,可以存放在memcache中,本以为session是不可以存放到redis中了,今天尝试了一下,竟然可以。session存文件是没问题的,存memcache也是没有问题的,这个我测试过,

请参考:web集群时利用memcache来同步session但是redis是部分是走内存,部分是走文件的。我在想redis是怎么对待session的呢,费话不多了,看下文。

 

一,redis服务端,以及php扩展php-redis的安装

  1. [root@mysqlMaster www]# yum install redis php-devel php-redis  

如果找不到redis,php-redis包的话,换源。如果不想换源的,请参考:linux redis 安装配置, 以及redis php扩展

二,配置redis服务端

  1. [root@mysqlMaster www]# mv /etc/redis.conf /etc/redis.conf_bak //备份原有redis配置文件  
  2. [root@mysqlMaster www]# cat /etc/redis.conf    //添加以下内容  
  3. daemonize yes  
  4. pidfile /var/run/redis/redis.pid  
  5. port 6379  
  6. timeout 300  
  7. loglevel verbose  
  8. logfile /var/log/redis/redis.log  
  9. databases 16  
  10. save 900 1  
  11. save 300 10  
  12. save 60 10000  
  13. rdbcompression yes  
  14. dbfilename dump.rdb  
  15. dir /var/lib/redis/  
  16. slave-serve-stale-data yes  
  17. appendonly no  
  18. appendfsync everysec  
  19. no-appendfsync-on-rewrite no  
  20. vm-enabled no  
  21. vm-swap-file /tmp/redis.swap  
  22. vm-max-memory 0  
  23. vm-page-size 32  
  24. vm-pages 134217728  
  25. vm-max-threads 4  
  26. hash-max-zipmap-entries 512  
  27. hash-max-zipmap-value 64  
  28. list-max-ziplist-entries 512  
  29. list-max-ziplist-value 64  
  30. set-max-intset-entries 512  
  31. activerehashing yes  

参数说明:linux redis 安装配置, 以及redis php扩展,这篇博客里面有。

三,启动redis服务端,并且查看php-redis扩展

1,启动服务端

  1. [root@mysqlMaster ~]# /etc/init.d/redis start  

2,修改php.ini配置

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

3,查看redis的php扩展

查看一下phpinfo要有以下二样,才能将session存储到redis中,

redis php扩展

redis php扩展

有了redis扩展,还要看php.ini有没有配置好。

session 可以存到redis中

session 可以存到redis中

四,session存储到redis中测试

  1. <?php  
  2. session_start();  
  3. $_SESSION['redis'] = "aaaaaa";  
  4. echo session_id();  
  5. echo "<br>";  
  6. echo $_SESSION['redis'];  
  7. echo "<br>";  
  8. $redis = new redis();  
  9. $redis->connect('192.168.1.108', 6379);  
  10. echo $redis->get("PHPREDIS_SESSION:ruk5i2vlu2hvtmfr5hig4l55f6");//这个key我是通过telnet到redis查的。  
  11. ?>  
页面显示结果

页面显示结果

echo session_id();显示出来是ruk5i2vlu2hvtmfr5hig4l55f6,开始的时候,echo $redis->get("ruk5i2vlu2hvtmfr5hig4l55f6");不管怎么样都取不到值,因为memcache这样是可以取到值的,所以我就想redis估计也是这样。telnet到redis看了一下,原来命名key值的方式是不一样的,看下图

redis telnet查看session

redis telnet查看session

到这儿session存储到redis是没有问题了,怎么同步呢。多服务器时,redis是可以配置同步的,当一台机子有session就可以准实时的同步到另一台。关于redis同步,请参考:redis 分布式,主从同步



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/cache/1434.html
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 hmc0316 的頭像
    hmc0316

    hmc0316的部落格

    hmc0316 發表在 痞客邦 留言(0) 人氣()