redis 从一个库复制一个key到另外一个库

#复制全部一个库的全部key

#!/bin/bash
src_ip=127.0.0.1
src_port=8090
src_db=14
src_pw='1234'

dest_ip=127.0.0.1
dest_port=8090
dest_db=15
desc_pw='1234'

redis-cli -h $src_ip -p $src_port  -a $src_pw  -n $src_db keys "*" | while read key
do
    redis-cli -h $src_ip -p $src_port -a $src_pw  -n $src_db --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h $dest_ip -p $dest_port -a $desc_pw -n $dest_db -x restore $key 0
    echo "migrate key $key"
done

#复制一个库的部分key

#!/bin/bash
src_ip=127.0.0.1
src_port=8090
src_db=14
src_pw='1234'

dest_ip=127.0.0.1
dest_port=6379
dest_db=2
desc_pw='1234'
 
#要遍历的key
k=(test ws we)

for loop in ${k[*]}
do
    redis-cli -h $src_ip -p $src_port -a $src_pw -n $src_db --raw dump $loop | perl -pe 'chomp if eof' | redis-cli -h $dest_ip -p $dest_port -a $desc_pw -n $dest_db -x restore $loop 0
    echo "The value is: $loop"
done

#只复制一个key

redis-cli -h 127.0.0.1 -p 8090 -a 1234 -n 14 --raw dump test | perl -pe 'chomp if eof' | redis-cli -h 127.0.0.1 -p 8090 -a 1234 -n 15 -x restore test 0

-h hostip,

-p 端口,

-a 密码,

-n db库,

--no-raw选项是要求命令的返回结果必须是原始的格式,

--raw恰恰相反,返回格式化后的结果,

-x 选项代表从标准输入(stdin)读取数据

perl -p(perl 命令可自行百度) 使 Perl 隐式地循环遍历指定的文件,同时打印所有的行。自动循环+自动输出,相当于 while(<>) { 脚本; print; }

Python

# coding=utf-8
import redis

redis_from = redis.StrictRedis(host='127.0.0.1', port=6379, db=0)
redis_to = redis.StrictRedis(host='127.0.0.1', port=6379, db=0)

if __name__ == '__main__':
    cnt = 0
    for k in redis_from.keys():
        data_type = redis_from.type(k)

        if data_type == 'string':
            v = redis_from.get(k)
            redis_to.set(k, v)

        elif data_type == 'list':
            values = redis_from.lrange(k, 0, -1)
            redis_to.lpush(k, values)

        elif data_type == 'set':
            values = redis_from.smembers(k)
            redis_to.sadd(k, values)

        elif data_type == 'hash':
            keys = redis_from.hkeys(k)
            for key in keys:
                value = redis_from.hget(k, key)
                redis_to.hset(k, key, value)

        else:
            print 'not known type'

        cnt = cnt + 1

    print 'total', cnt

 

转载于:https://my.oschina.net/ToFlySeif/blog/1805763

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,可以使用Jedis来连接和操作Redis。要遍历Redis中的数据,可以按照以下步骤进行操作: 1. 首先,需要在Java项目中引入Jedis的依赖。可以通过在项目的pom.xml文件中添加以下代码来实现: ```xml <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.6.0</version> </dependency> ``` 2. 在Java代码中,可以使用Jedis类来连接到Redis服务器。首先创建一个Jedis对象,并指定Redis服务器的主机名和端口号: ```java Jedis jedis = new Jedis("localhost", 6379); ``` 3. 如果Redis服务器有密码保护,还需要使用`auth`方法来进行身份验证: ```java jedis.auth("password"); ``` 4. 连接成功后,可以使用`select`方法选择要操作的Redis默认有16个,编号从0到15。选择的命令如下: ```java jedis.select(dbIndex); ``` 其中,`dbIndex`表示的编号,范围为0到15。 5. 遍历该的数据可以使用`keys`方法来获取所有键名,然后使用`get`方法获取对应的值。代码示例如下: ```java Set<String> keys = jedis.keys("*"); for(String key : keys){ String value = jedis.get(key); System.out.println("Key: " + key + ", Value: " + value); } ``` 这段代码会获取该中的所有键名,并遍历输出每个键的键名和对应的值。 6. 最后,记得在结束后关闭连接,释放资源: ```java jedis.close(); ``` 以上就是在Java中遍历Redis中其中一个的数据的步骤。请根据实际情况修改代码中的主机名、端口号、密码和的编号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值