Mysql自動同步memcached

Mysql自動同步memcached並把表原有數據進行初始化到memcached

Mysql通過觸發器把表數據更改自動同步到memcached,而且可以實現對mysql表原有數據進行初始化到memcached.

具體安裝略.....

下面是對自己建的you測試表操作

建立insert觸發器

delimiter $$

create trigger you_mem_insert before insert on you for each row begin set @tex=memc_set(concat('text_',NEW.id),NEW.text);

set @us=memc_set(concat('user_',NEW.id),NEW.user);

set @ti=memc_set(concat('time_',NEW.id),NEW.time);

end $$

 

建立update觸發器

delimiter $$

create trigger you_mem_update before update on you for each row begin set @tex=memc_set(concat('text_',OLD.id),NEW.text);

set @us=memc_set(concat('user_',OLD.id),NEW.user);

set @ti=memc_set(concat('time_',OLD.id),NEW.time);

end $$

 

建立delete觸發器

delimiter $$

create trigger you_mem_delete before delete on you for each row begin set @tex=memc_delete(concat('text_',OLD.id));

set @us=memc_delete(concat('user_',OLD.id));

set @ti=memc_delete(concat('time_',OLD.id));

end $$

 

建立完成後退出再登錄,進入到you表所在的庫.

通過show triggers可查看添加的觸發器

 

添加memcached服務器地址

select memc_servers_set('127.0.0.1:11211');

 

mysql可以通過 select memc_set()來把數據寫入到memcached,所以可以對mysql進行初始化,把表已有數據初始化到memcached,腳本如下(mem.sh) ;

mysql -e "select * from test.you" > 3.txt

k=`cat 3.txt |wc -l`

for((i=2;i<=k;i++))

do

mysql  --database test -e "select memc_set('text_`awk -v var=$i  'NR==var{print$1}' 3.txt`','`awk -v var=$i  'NR==var{print$2}' 3.txt`')"

mysql  --database test -e "select memc_set('user_`awk -v var=$i  'NR==var{print$1}' 3.txt`','`awk -v var=$i  'NR==var{print$3}' 3.txt`')"

mysql  --database test -e "select memc_set('time_`awk -v var=$i  'NR==var{print$1}' 3.txt`','`awk -v var=$i  'NR==var{print$4}' 3.txt`')"

done

 

運行mem.sh

telnetmemcached,可查看到表數據全部初始化到memcached上來了.

 

 

後期的就是由mysql自動同步memcached,但這樣子對於應用到生產環境還是不行的.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章