redis - 在redis中将所有键从一个数据库复制到另一个数据库

标签 redis

我不想移动,而是想将我的所有 key 从一个特定的数据库复制到另一个数据库。 如果是的话,在redis中有可能吗?

最佳答案

如果你不能使用MIGRATE COPY由于您的 redis 版本 (2.6),您可能希望单独复制每个 key ,这需要更长的时间,但不需要您登录到机器本身,并允许您将数据从一个数据库移动到另一个数据库。 这是我将所有 key 从一个数据库复制到另一个数据库的方法(但不保留 ttls)

#set connection data accordingly
source_host=localhost
source_port=6379
source_db=0
target_host=localhost
target_port=6379
target_db=1

#copy all keys without preserving ttl!
redis-cli -h $source_host -p $source_port -n $source_db keys \* | while read key; do
    echo "Copying $key"
    redis-cli --raw -h $source_host -p $source_port -n $source_db DUMP "$key" \
        | head -c -1 \
        | redis-cli -x -h $target_host -p $target_port -n $target_db RESTORE "$key" 0
done

key 不会被覆盖,为此,在复制之前删除这些 key ,或者在开始之前简单地刷新整个目标数据库。

关于redis - 在redis中将所有键从一个数据库复制到另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23222616/

相关文章:

java - 如何在 Spring Boot 中配置 Redis 缓存?

c# - 在 C# Redis : could not connect to redis Instance at 127. 0.0.1:6379

redis - 如何计算匹配模式的键数?

REDIS-如果其中一个命令不起作用,管道不会失败

amazon-web-services - 您可以使用 Redis 运行整个服务吗?

java - 如何 Autowiring RedisTemplate<String,Long>

ruby-on-rails - 使用 Redis 作为身份验证 token

redis - 无法使用 PooledRedisClientManager

redis - 防止servicestack RedisClient中的属性序列化

ruby-on-rails - 使用 devise-async 发送电子邮件不起作用 (Rails/Sidekiq)