- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想使用redis缓存将mysql查询存储在redis中,第一次按预期工作(因为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;
最佳答案
您需要遍历查询结果,mysql_query
返回的资源无法序列化。
你可以试试这样的:
$key = "sql_cache:" . md5($sql);
// If $key exists get and unserialize it, otherwise set $data to empty array
$data = $redis->exists($key)
? unserialize($redis->get($key))
: array();
if (empty($data)) {
$rs = mysql_query($sql);
if ($rs === false) {
die(mysql_error());
}
// Iterate through results...
while ($row = mysql_fetch_assoc($rs)) {
$data[] = $row;
}
// Put data into cache for 1 hour
$redis->set($key, serialize($data));
$redis->expire($key, 3600);
}
echo 'data= '.$data;
$nr = count($data);
echo "Number of rows: " . $nr;
关于php - 使用 predis 在 redis 中存储 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34577755/
我有一个带有 PHP 5.5.4 的新 EC2 实例,我正在尝试从 Pear 安装 Predis。每次我尝试从 pear 安装 Predis 时,我都会遇到以下错误。 有人知道为什么会这样吗?我在谷歌
当我尝试将“NX”添加到 predis 上的 zadd 命令时遇到问题。 redis 文档说 ZADD 应该支持 NX,但无论我如何设置 predis 命令,我都无法让它工作。有没有人对这个问题有任何
比如说,我在 predis 连接池中有 N 个服务器。我发现当其中一台服务器宕机时,predis 不起作用(即,如果任何服务器 Si 宕机, new predis/client(s1,s2,...)
所以我刚开始学习 Redis 并尝试使用此链接为 PHP 安装它:- https://github.com/nrk/predis 我通过 composer 安装它然后运行 :- require '
我正在尝试执行下一个命令。 Redis::hincrby('sentiment_combined:positive', 'рыжий кот', 1); 此命令非常适用于拉丁键,例如 'orange
我正在使用 Predis 连接到 Redis 3.0.2 集群。因此,我可以选择使用 predis 或 redis 集群策略。我想知道选择其中一个而不是另一个是否有任何重大的利弊? 根据我对文档的漫游
您好,我有以下内容: // Named array of connection parameters: $redis = new Predis\Client([ 'scheme
我正在尝试通过别名使用 Predis 分片,如 described here .我的代码基本相同,但我只返回空数组。我的哈希键周围需要 {} 吗? (编辑:不,只是试过了) $api->get("
predis 可以使用数组作为 hmget() 的第二个参数来一次检索多个字段吗?例如$client->hmget($key, $fields);//$fields 是一个数组 它是否也可以接受许多字
如何在客户端之间多次发布信息? 我的意思是当我从一个用户向另一个用户发布信息时,他会收到并向后发送,但这只有一次。 因为当一个用户向另一个用户发送内容时,GET 正在加载并且接收停止,我怎样才能做到这
如果 Redis 失败,是否可以指示 php predis ( https://github.com/nrk/predis ) 继续运行而不死掉? 我有Redis来处理应用程序缓存,但是应用程序可以在
我想知道如何使用 Redis 实现唯一访客计数器超时为 1 小时。我有一个小网上商店,我想显示目前有多少人正在查看一篇文章。最好的方法是什么?我正在使用 Predis 提前致谢 最佳答案 你需要做两件
我正在针对 AWS 上的 Elasticache 集群运行 Predis,该集群有一个写入主机和两个读取主机副本。 Predis 主从复制配置大致如下.. self::$client = new Pr
我正在使用 nrk/predis用于在我的 PHP 脚本中处理 Redis 客户端。 我正在尝试为该客户端中使用的所有键设置前缀: $client = new Predis\Client([
我最近开始使用PHP 和Redis(predis) 开发一个项目。我们可以通过在 redis-cli 中运行 INFO keyspace 命令来查看所有数据库及其 key 。我想知道如何使用 pred
我正在尝试通过 Predis 使用客户端分区。一切似乎都在工作,但我如何验证值是否存储在多个服务器上?我希望能够列出每台服务器上的所有 key ,但在 predis 文档中看不到如何操作。我尝试进行简
我正在尝试在 xampp 的本地机器上运行 laravel shop 菜单项目。但是当我尝试运行它时,它会显示以下错误。请帮我解决这个问题。我还附上了一个屏幕截图以便更清楚地说明。 提前致谢: 错误:
我尝试使用 lpush $list = "flavors"; $array = array($_GET["mainid"], $_GET["flavor1"], $_GET["flavor2"], $
我正在使用 predis php 客户端。我的代码是这样的: $ObjArray = get_object_vars ( $obj ); $redis->hmset("post:4545",$
Predis 声称拥有客户端分片(支持键的一致性散列)。 http://github.com/nrk/predis 我可以使用连接到一组配置文件(节点)来进行分片,但它不是一致的哈希。当我将另一个节点
我是一名优秀的程序员,十分优秀!