這篇文章主要介紹了php實(shí)現(xiàn)redis數(shù)據(jù)庫指定庫號遷移的方法,涉及對于redis數(shù)據(jù)庫的操作技巧,非常具有實(shí)用價值,需要的朋友可以參考下
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括安徽網(wǎng)站建設(shè)、安徽網(wǎng)站制作、安徽網(wǎng)頁制作以及安徽網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,安徽網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到安徽省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
本文實(shí)例講述了php實(shí)現(xiàn)redis數(shù)據(jù)庫指定庫號遷移的方法,分享給大家供大家參考。具體如下:
redis普通的數(shù)據(jù)庫遷移,只能整個redis
save,或者利用主從,當(dāng)然也可以安裝一個redis-dump,不過比較麻煩,這里提供一種php的腳本,實(shí)現(xiàn)指定庫號的遷移,其實(shí)也就是遍歷根據(jù)存儲類型,讀出來,插入新庫,效果是這樣:
代碼如下:
[root@localhost
~]#
php
1.php
1/407
101/407
201/407
301/407
401/407
PHP實(shí)例代碼如下:
代碼如下:
?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程序設(shè)計(jì)有所幫助。
建表
phinx\bin\phinx.bat migrate -e production
建設(shè) phinx.yml文件
paths:
migrations: %%PHINX_CONFIG_DIR%%\database\migrations
seeds: %%PHINX_CONFIG_DIR%%\database\seeds
environments:
default_migration_table: phinxlog
default_database: development
production:
adapter: mysql
host: localhost
name: jitamin2
user: root
pass: ‘‘
port: 3306
charset: utf8
development:
adapter: mysql
host: localhost
name: development_db
user: root
pass: ‘‘
port: 3306
charset: utf8
testing:
adapter: mysql
host: localhost
name: testing_db
user: root
pass: ‘‘
port: 3306
charset: utf8
數(shù)據(jù)遷移命令如下:
phinx\bin\phinx.bat seed:run -e production
%%PHINX_CONFIG_DIR%%\database\seeds下面的文件示例CreateGroupsTable.php如下:
?php
/*
* This file is part of Jitamin.
*
* Copyright (C) Jitamin Team
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Jitamin\Foundation\Security\Role;
use Phinx\Seed\AbstractSeed;
class UserSeeder extends AbstractSeed
{
/**
* Run Method.
*/
public function run()
{
$data = [
[
‘username‘ = ‘a(chǎn)dmin‘,
‘password‘ = bcrypt(‘a(chǎn)dmin‘),
‘email‘ = ‘a(chǎn)dmin@admin.com‘,
‘role‘ = Role::APP_ADMIN,
],
];
$users = $this-table(‘users‘);
$users-insert($data)
-save();
}
}
折磨了我兩年多的老mac,終于還是決定換新機(jī)了。
老mac上已經(jīng)裝了很多東西,也是我一直忍著不換的原因。在換機(jī)之前還一直擔(dān)心,這么多東西要裝死我呀。還好 一百度發(fā)現(xiàn)優(yōu)秀的蘋果有自帶數(shù)據(jù)遷移的功能。
數(shù)據(jù)遷移 自行百度,很簡單,過程中沒遇到啥問題。
主要說遇到的問題
死活不讓建啊,百度說需要在安全模式下關(guān)閉SIP
結(jié)果問題2誕生了 這安全模式不論是 command+R 還是 command+option+R+P 還是 shift 統(tǒng)統(tǒng)進(jìn)不去,救命了,重啟了半天死活進(jìn)不去
百度了半天,最后找運(yùn)維大佬求助,找到了這個
哦,原來咱是11.4的版本,咱得用芯片的方式進(jìn)入安全模式
然后呢,這安全模式也怪坑的,賊難進(jìn)。
具體就是先關(guān)機(jī),然后按開機(jī)鍵,然后死死按住開機(jī)鍵,直到看到那一行小字變成另一行小字了就趕快放手了,繼續(xù)按著就關(guān)機(jī)了。。。
然后呢,咱要進(jìn)安全模式,咱不能選左邊的磁盤,要選右邊的選項(xiàng),不然你要是進(jìn)了左邊的磁盤然后執(zhí)行那個命令 啥 csrutil disable 哎喲人家就一直提示咱 這得從安全模式下才能執(zhí)行
然后咱又懵了 啥?我這不是安全模式嗎???
正確操作是 進(jìn)右邊那個選項(xiàng),然后等他loading完,左上角有個實(shí)用工具,然后就在那里打開終端,執(zhí)行csrutil disable這個命令,ok 成功了!
具體就是 按這個來,只是版本如果是11的,得按芯片的方式進(jìn)入安全模式。
然后按文檔說的,咱要重啟 再mount一下就完事了吧~好叻 那么問題3也來了
啥玩意?咱好不容易進(jìn)了安全模式把那啥安全模式給關(guān)了,你咋還不讓掛載呢,這都整半天了,搞啥玩意?
再一頓百度,可算找到正解了
看看你的mac 的系統(tǒng)版本,如果是[Cataline] 也就是11之前的,使用方法一
mac的版本 11.0 之后的用下面,Mac Big Sur 使用方法二
方法二根本不需要用到安全模式,哈哈哈哈哈。。不知道哭好還是笑好
所以咱按方法二很快搞定了
然后啟動nginx,之前配置nginx文件里一些路徑和現(xiàn)在有點(diǎn)出入,改一下
就行了。
之前是搞過的,但是遷移到新機(jī)后,phpstorm就一直提示應(yīng)用程序phpstorm不能打開,應(yīng)該是跟激活有關(guān)
進(jìn)到 /Applications/PhpStorm.app/Contents/MacOS 下發(fā)現(xiàn)
把A中的q1倒出來 mysqldump -uadmin1 -padmin111 Q1 Q1.sql
然后再B中新建Q2,create database Q2
應(yīng)用Q2 use Q2
導(dǎo)入Q1 source Q1.sql
賦予用戶 grant all privileges on Q2.* to 'admin2'@localhost identified by 'admin2222'
這樣就可以了!