如何从redis缓存键获取数组值

时间:2013-09-26 05:52:56

标签: php caching redis query-cache

下面是我的php脚本,我从数据库中选择数据,然后使用 set命令将结果集数组存储到redis缓存中,但是当我尝试使用获取时无法获得完全数据命令

<?php
    $redis = new Redis();
    $redis->connect('127.0.0.1', 6379);

    mysql_connect("localhost", "test", "testing123") or die(mysql_error());
    mysql_select_db("test") or die(mysql_error());

    $query = "select id from example where name = 'new_data'";
    $querykey = "KEY" . md5($query);

    echo $querykey;
    $result = $redis->get($querykey);
    echo "<pre>";
    print_r($result);

    if (!$result) {
        $result = mysql_fetch_array(mysql_query("select id from example where name = 'new_data'")) or die('mysql error');
        print_r($result);
        $redis->set($querykey, $result);
        print "got result from mysql\n";
        return 0;
    }

    print "got result from redis\n";
    return 0;
?>

当我执行print_r($ result)时,它只提供数组。方法中的问题是什么,或者还有其他方法可以做到这一点。

任何帮助表示赞赏。 谢谢

2 个答案:

答案 0 :(得分:1)

据我所知,你必须将一个字符串传递给Redis设置函数。但是你传递了一个数组。

答案 1 :(得分:1)

如果要在Redis中存储与键对应的结果集,请对字符串进行json_encode或将数组结果存储为Redis中的SET。