php实现redis数据库指定库号迁移的方法

php实现redis数据库指定库号迁移的方法,第1张

这篇文章主要介绍了php实现redis数据指定库号迁移的方法,涉及对于redis数据库的 *** 作技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了php实现redis数据库指定库号迁移的方法,分享给大家供大家参考。具体如下:

redis普通的数据库迁移,只能整个redis

save,或者利用主从,当然也可以安装一个redis-dump,不过比较麻烦,这里提供一种php的脚本,实现指定库号的迁移,其实也就是遍历根据存储类型,读出来,插入新库,效果是这样:

代码如下:

[root@localhost

~]#

php

1.php

1/407

101/407

201/407

301/407

401/407

PHP实例代码如下:

代码如下:

<?php

$from

=

'10.0.2.52:6379/7'

$to

=

'127.0.0.1:6379/7'

$from_redis

=

redis_init($from)

$to_redis

=

redis_init($to)

$keys

=

$from_redis->keys('*')

$count

=

0

$total

=

count($keys)

foreach($keys

as

$key){

if(++$count

%

100

==

1){

echo

"$count/$totaln"

}

$type

=

$from_redis->type($key)

switch($type){

case

Redis::REDIS_STRING:

$val

=

$from_redis->get($key)

$to_redis->set($key,

$val)

break

case

Redis::REDIS_LIST:

$list

=

$from_redis->lRange($key,

0,

-1)

foreach($list

as

$val){

$to_redis->rPush($key,

$val)

}

break

case

Redis::REDIS_HASH:

$hash

=

$from_redis->hGetAll($key)

$to_redis->hMSet($key,

$hash)

break

case

Redis::REDIS_ZSET:

$zset

=

$from_redis->zRange($key,

0,

-1,

true)

foreach($zset

as

$val=>$score){

$to_redis->zAdd($key,

$score,

$val)

}

break

}

}

function

redis_init($conf){

$redis

=

new

Redis()

preg_match('/^([^:]+)(:[0-9]+)?/(.+)?/',

$conf,

$ms)

$host

=

$ms[1]

$port

=

trim($ms[2],

':')

$db

=

$ms[3]

$redis->connect($host,

$port)

$redis->select($db)

return

$redis

}

?>

希望本文所述对大家的php程序设计有所帮助。

存储普通数据就用set,读取就用get。存储普通数据就用set,读取就用get。

但是存储之前最好是先判断一下。

下面是一段相关的代码。

<?php

$redis = new Redis()

$redis->connect('127.0.0.1', 6379)//连接redis

if (!$redis->exists("content")){

    //如果没有content这个key,就新建一个,并存储数据。

    $redis->set("content",$content)

}else{

    //如果存在,则读取content这个key里面的数据

    echo $redis->get("content")

}

?>

推荐去三体教程看看,有redis存储读取数据方法的详解。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9896556.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存