用redis做跨域session共享,发现一个问题
PhpRedis 中的Session handler存session为什么用string而不是用hash?
个人认为,session_id作为key没有问题
但是$_SESSION是一个hash数组,也就是说整个session是一个2维的(sessionid,key,value)的结构
那感觉用 redis的hash结构更加符合啊
key=sessionid
field=$_SESSION的key
用如下代码测试:
<?php
ini_set("session.save_handler","redis");
ini_set("session.save_path","tcp://192.168.56.101:6379?timeout=1");
session_start();
print "session_id:".session_id()."<br>";
if($_SESSION['test']=="")
{
$_SESSION['test']=time();
$_SESSION['test2']=time();
}
print $_SESSION['test'];
?>
get PHPREDIS_SESSION:q4assvtap9c9t685cqkamivcq6
后得到:
"test|i:1333266219;test2|i:1333266219;"
type PHPREDIS_SESSION:q4assvtap9c9t685cqkamivcq6
得到:
string
也就是它是将$_SESSION序列化之后用string来存$_SESSION的
那不是每次get和set都要分别序列化和反序列化?
性能上不是有影响?
讨论一下吧~~