Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Redis:转储数据库并删除转储的键/值对_Redis - Fatal编程技术网

Redis:转储数据库并删除转储的键/值对

Redis:转储数据库并删除转储的键/值对,redis,Redis,我有多台服务器,将所有集合成员存储在共享的Redis缓存中。当缓存填满时,我需要将数据持久化到磁盘以释放RAM。然后,我计划解析转储的数据,以便能够组合属于MongoDB中给定键的所有值 我的第一个计划是让每个服务器进程尝试sadd操作。如果由于Redis已到达maxmemory而导致请求失败,我计划查询我的每个设置密钥,并将每个密钥写入磁盘 但是,我想知道是否有一种方法可以使用Redis中内置的持久性方法将Redis数据写入磁盘,并在写入后删除键/值对。如果可能的话,我可以解析rdb转储并以这

我有多台服务器,将所有集合成员存储在共享的Redis缓存中。当缓存填满时,我需要将数据持久化到磁盘以释放RAM。然后,我计划解析转储的数据,以便能够组合属于MongoDB中给定键的所有值

我的第一个计划是让每个服务器进程尝试sadd操作。如果由于Redis已到达maxmemory而导致请求失败,我计划查询我的每个设置密钥,并将每个密钥写入磁盘


但是,我想知道是否有一种方法可以使用Redis中内置的持久性方法将Redis数据写入磁盘,并在写入后删除键/值对。如果可能的话,我可以解析rdb转储并以这种方式处理数据。我非常感谢其他人在这个问题上提供的任何帮助。

Redis的持久性用于RAM中的任何内容。换句话说,你不能坚持RAM中没有的东西


回答您的问题:不,您不能使用持久性从RAM卸载数据。

听起来您使用Redis是一种反模式。它不是一个可靠的持久存储。因此,推断丢失一些对象到服务器故障必须是正确的,您应该考虑注册PUBSUB通知。它们目前无法保证交付,但基本上并不比您当前的计划更不可靠。@Gene我只是使用Redis来积累数据,最终写入磁盘。这只是为了在分布式计算环境中聚合写操作。我不介意错过一些操作,因为我所有的数据类型都是集合,重复写入磁盘只是浪费,而不是致命的。这听起来像是一个反模式吗?那么一个Lua脚本如何原子化地运行save-then-flushall呢?我的直觉是,它会比我当前的方法更好,即查询所有键,然后持久化并原子化地删除每个键。。。