- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如何在 PHP 上转储和恢复 redis 数据库,我正在使用 predis在我的客户端上。
我可以将 redis 数据库转储为 .rdb 格式吗?
更新:
我使用以下命令转储/备份数据库,
$redis->bgSave();
如何将其还原回我的数据库?
最佳答案
作为Malinga,恢复发生在redis服务器重启时。所以你需要设置appendonly no。这样它将使用 .rdb 文件。
因此,我创建了一个示例程序来备份和恢复 redis 数据库,这里是 code你可以check
导出:
$i = 0;
$json = array();
foreach($redis->keys('*') as $key) {
$data = array();
$data['key'] = $key;
$data['ttl'] = $redis->ttl($key);
$data['value'] = bin2hex($redis->dump($key));
$json[$i] = $data;
$i++;
}
header('Content-disposition: attachment; filename=database.json');
header('Content-type: application/json');
echo json_encode($json);
导入:
if (isset($_POST['submit']) && $_POST['submit'] == 'Import') {
$types = array(
'application/json',
'application/octet-stream'
);
if (in_array($_FILES['upload']['type'], $types)) {
var_dump($_FILES);
if (move_uploaded_file($_FILES['upload']['tmp_name'], 'uploads/' . $_FILES['upload']['name']))
{
$file = file_get_contents('uploads/' . $_FILES['upload']['name'], "r");
$database = json_decode($file, true);
foreach($database as $data)
{
if ($data['ttl'] >= 0)
{
$data['ttl'] = $data['ttl'];
}
else
{
$data['ttl'] = 0;
}
if ($data['key'] && $data['value'] && !$redis->exists($data['key']))
{
$redis->restore($data['key'], $data['ttl'], hex2bin($data['value']));
}
}
}
}
}
完整代码可以通过GitHub 下载
关于php - 在 PHP 上转储和恢复 Redis (predis),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38167546/
我有一个带有 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 我可以使用连接到一组配置文件(节点)来进行分片,但它不是一致的哈希。当我将另一个节点
我是一名优秀的程序员,十分优秀!