我想使用redis缓存在redis中存储mysql查询,第一次按预期工作(因为redis中没有key)并执行查询,但后来$rs = @unserialize( $redis->get($key)
什么都不返回;我尝试了很多解决方案但没有运气,我的代码如下:
require __DIR__ . '/vendor/autoload.php';
Predis\Autoloader::register();
$redis = new Predis\Client(array(
"scheme" => "tcp",
"host" => "127.0.0.1",
"port" => 6379,
"password" => "testRedis"));
$sql="SELECT * FROM news where status=1 and (title like \"%$sword%\" or body like \"%$sword%\" or name like \"%$sword%\" or rss like \"%$sword%\")";
$key = "sql_cache:" . md5($sql);
if ($rs = @unserialize( $redis->get($key) ) === false){
$rs = mysql_query($sql)or die(mysql_error());
// Put data into cache for 1 hour
$redis->set($key, serialize($rs));
$redis->expire($key, 3600);
}
echo 'rs= '.$rs;
$nr = @mysql_num_rows($rs);
echo "Number of rows: " . $nr;