国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
記錄&分享 ? Blog Archive ? 將MySQL數(shù)據(jù)映射到Memcached中

作者:張立冰
出處:http://www.libing.name/2009/02/06/mysql-map-data-to-memcachedmysql-map-data-to-memcached.html

差不多在一年前,寫過一篇文章介紹將MySQL數(shù)據(jù)映射到Memcached,當(dāng)時(shí)MySQL和Memcached Functions for MySQL都還不夠成熟,時(shí)過一年,Memcached Functions for MySQL升級(jí)到了0.8版本,而MySQL也發(fā)布了GA版本,加上很多朋友反應(yīng)前一篇文章中的實(shí)現(xiàn)他們因種種原因沒能成功,于是便有了這篇文章,就當(dāng)是上一篇文章的升級(jí)版本吧。

測(cè)試環(huán)境在Linux下進(jìn)行,版本系統(tǒng)為CentOS5.
以下為相關(guān)軟件,包括其版本和下載地址:

mysql-5.1.30 下載
memcached-1.2.6 下載
libevent-1.4.7-stable 下載
memcached_functions_mysql-0.8 下載
libmemcached-0.26 下載


編譯安裝MySQL,安裝因個(gè)人細(xì)好而定,省略許多與測(cè)試無關(guān)的編譯細(xì)節(jié)及參數(shù)。

[root@localhost ~]#tar xzf mysql-5.1.30.tar_001.gz[root@localhost ~]#cd mysql-5.1.30[root@localhost ~]#./configure --prefix=/usr/local/mysql51[root@localhost ~]#make[root@localhost ~]#make install[root@localhost ~]#./scripts/mysql_install_db --user=mysql --skip-name-resolve[root@localhost ~]#/usr/local/mysql51/bin/mysqld_safe

省略列出安裝memcached和libevent的相關(guān)命令,具體可按照實(shí)際情況安裝,測(cè)試時(shí)我將libevent默認(rèn)安裝,memcached安裝于/usr/local/memcached目錄下。
啟動(dòng)memcached.

/usr/local/memcached/bin/memcached -d -m 50 -u root -p 11211

編譯安裝libmemcache.

[root@localhost ~]#tar xzf libmemcached-0.26.tar.gz[root@localhost ~]#cd libmemcached-0.26[root@localhost ~]#./configure --with-memcached=/usr/local/memcached/bin/memcached[root@localhost ~]# make && make install

編譯安裝Memcache UDFs for MySQL.

[root@localhost ~]# tar xzf memcached_functions_mysql-0.8.tar.gz[root@localhost ~]# cd memcached_functions_mysql-0.8[root@localhost ~]# ./configure --with-mysql-config=/usr/local/mysql51/bin/mysql_config[root@localhost ~]# make && make install

編譯完成后將編譯好的庫文件復(fù)制到mysql的插件目錄下,以便于加載使用。

cp /usr/local/lib/libmemcached_functions_mysql* /usr/local/mysql51/lib/mysql/plugin/

進(jìn)入memcached_functions_mysql的源碼目錄,在目錄下有相關(guān)添加UDF的SQL文件用于初始化。

[root@localhost ~]# mysql <sql/install_functions.sql

注:如果對(duì)這些UDFs不熟悉或者不懂,可進(jìn)行源碼目錄參看README,里邊有相應(yīng)的說明。

至此,相關(guān)軟件的編譯和安裝完成,進(jìn)行測(cè)試,我們要達(dá)到的目的是當(dāng)MySQL有新記錄插入時(shí),同時(shí)插入到Memcached中,當(dāng)記錄更新時(shí)同步更新Memcached中的記錄,刪除時(shí)同時(shí)也刪除Memcached相關(guān)的記錄,為此創(chuàng)建三個(gè)觸發(fā)器來實(shí)現(xiàn),如果對(duì)MySQL的觸發(fā)程序不熟悉可以參考MySQL手冊(cè)第21章,下面SQL中的memcached為需要操作的表名,SQL如下:

#插入數(shù)據(jù)時(shí)插入Memcachedcreate trigger mysqlmmci after insert on memcached for each row set @tmp = memc_set(NEW.key, NEW.value);#更新記錄時(shí)更新Memcachedcreate trigger mysqlmmcu after update on memcached for each row set @tmp = memc_set(NEW.key, NEW.value);#刪除記錄時(shí)刪除Memcached相應(yīng)的記錄create trigger mysqlmmcd before delete on memcached for each row set @tmp = memc_delete(OLD.key);

以下為測(cè)試記錄,在對(duì)MySQL操作的同時(shí)操作Memcached來查看情況,當(dāng)然你也可以在啟動(dòng)Memcached的時(shí)候帶-vv參數(shù)來查看相關(guān)信息.

MySQL操作相關(guān)的記錄:

[root@localhost ~]#mysql -S /tmp/mysql51.sock Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 6Server version: 5.1.30 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use test;Database changed mysql> create table `memcached` (`key` varchar(10), `value` varchar(100));Query OK, 0 rows affected (0.00 sec) mysql> create trigger mysqlmmci after insert on memcached for each row set @tmp = memc_set(NEW.key, NEW.value);Query OK, 0 rows affected (0.00 sec) mysql> create trigger mysqlmmcu after update on memcached for each row set @tmp = memc_set(NEW.key, NEW.value);Query OK, 0 rows affected (0.00 sec) mysql> create trigger mysqlmmcd before delete on memcached for each row set @tmp = memc_delete(OLD.key);Query OK, 0 rows affected (0.00 sec) mysql> insert into memcached values("keyi", "valuei"),("keyu","valueu"),("keyd", "valued");Query OK, 3 rows affected (0.00 sec)Records: 3  Duplicates: 0  Warnings: 0 mysql> update memcached set `value`="update" where `key`="keyu";Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0 mysql> delete from memcached where `key`="keyd";Query OK, 1 row affected (0.00 sec) mysql> quitBye

Memcache查看時(shí)的記錄:

[root@localhost ~]#telnet 127.0.0.1 11211Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.get keyiVALUE keyi 0 6valueiENDget keyuVALUE keyu 0 6valueuENDget keydVALUE keyd 0 6valuedENDget keyuVALUE keyu 0 6updateENDget keydENDquitConnection closed by foreign host.

至此,我們基本實(shí)現(xiàn)的將MySQL的數(shù)據(jù)同步到Memcached中,性能暫時(shí)還沒有測(cè)試,當(dāng)然上面只是簡(jiǎn)單的實(shí)現(xiàn)的數(shù)據(jù)映射的功能,如果在實(shí)現(xiàn)的生產(chǎn)環(huán)境中,則需要考慮名字空間,高可靠性的問題,這些都是可以通過數(shù)據(jù)庫名-表名-關(guān)鍵字的方面能達(dá)到KEY唯一的目的,而高可靠性則是一個(gè)比較大的問題。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【任務(wù)6-9】在命令行修改與刪除普通用戶
Linux mysql5.7.20 二進(jìn)制文件安裝
記一次詭異的MySQL數(shù)據(jù)庫創(chuàng)建用戶失敗
[轉(zhuǎn)載]mysqlhotcopy 熱備工具體驗(yàn)與總結(jié)
MYSQL數(shù)據(jù)庫基礎(chǔ)
一篇搞懂MySQL 8.0 Clone技術(shù)在線搭建主從復(fù)制全過程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服