本文介紹利用mysql udfs for memcached與mysql觸發程式結合實現將mysql的資料對映到memcached的一種方法,能實現當mysql資料更新時,實時更新memcache資料的效果,從而減少開發相應程式來維護memcached資料。
mysql udfs for memcached的官方介紹:
在測試之間需要安裝以下軟體及開發包:
mysql 5.0+編譯安裝:memcached (libevent…)
libmemcached
tar xzvf memcached_functions_mysql-0.2.tar.gz安裝完成後將udfs載入到mysql中:cd memcached_functions_mysql-0.2
./configure –with-mysql=mysql_dir/bin/mysql_config –libdir=mysql_dir/lib/mysql/
make
make install
memc_servers_set()此處省略多行……mysql> create function memc_servers_set returns int soname 「libmemcached_functions_mysql.so」;
memc_set()
mysql> create function memc_set returns int soname 「libmemcached_functions_mysql.so」;
memc_get()
mysql> create function memc_get returns string soname 「libmemcached_functions_mysql.so」;
memc_delete()
mysql> create function memc_delete returns string soname 「libmemcached_functions_mysql.so」;
測試udf是否安裝成功:
先新增memcached,可以新增多台。
mysql> select memc_servers_set(』127.0.0.1′);測試將mysql資料對映到memcached中,如果對mysql的觸發程式不熟悉可以參考mysql手冊第21章。mysql> select memc_set(』libing』, 『roast』);
+—————————-+
| memc_set(』libing』, 『roast』) |
+—————————-+
| 0 |
+—————————-+
1 row in set (0.00 sec)
mysql> select memc_get(』libing』);
+———————————+
| memc_get(』libing』) |
+———————————+
| roast |
+———————————+
1 row in set (0.00 sec)
mysql> create table memcached (`key` int, `value` varchar(100));query ok, 0 rows affected (0.02 sec)
mysql> create trigger mysqlmmc before insert on memcached for each row
> set @tmp = memc_set(new.key, new.value);
query ok, 0 rows affected (0.00 sec)
mysql> insert into memcached values(9,』roast』);
query ok, 1 row affected (0.01 sec)
mysql> select memc_servers_set(』127.0.0.1′);
+——————————-+
| memc_servers_set(』127.0.0.1′) |
+——————————-+
| 58360307675824128 |
+——————————-+
1 row in set (0.00 sec)
mysql> select memc_get(』9′);
+—————+
| memc_get(』9′) |
+—————+
| roast |
+—————+
1 row in set (0.00 sec)
[root@nd-zf-mx ~]# telnet 127.0.0.1 11211這裡只實現了當資料庫的新記錄產生時候,同步更新memcached的觸發程式。trying 127.0.0.1…
connected to nd (127.0.0.1).
escape character is 『^]』.
get 9
value 9 0 5
roast
end
當資料庫有更新和刪除操作時都需要同步更新memcached從而達到對映的關係。
將檔案對映到記憶體
mmap的好處 和read write系統呼叫相比不會產生無關的副本 如果不出錯就不會有系統呼叫 操作環境切換等開銷 不再需要lseek呼叫。mmap的壞處 記憶體對映總是pagesize的整數倍,會浪費一定的記憶體 如果要對映的內容非常大的時候可能找不到連續的線性位址空間 建立並維護核心相關資料結...
將實體對映到多個表
table secondtable name catalog schema pkjoincolumns 指定新資料表中的乙個或多個外來鍵,只有通過該外來鍵才可讓新資料表中的記錄參照到主表記錄,屬性 primarykeyjoincolumn uniqueconstraints 為新資料表指定唯一約束 ...
步步學LINQ to SQL 將類對映到資料庫表
該系列教程描述了如何採用手動的方式對映你的物件類到資料表 而不是使用象sqlmetal這樣的自動化工具 以便能夠支援資料表之間的m m關係和使用實體類的資料繫結。即使你選擇使用了自動生成類的工具,理解這一實現過程可以讓你更加方便地對你的應用程式加以擴充套件。下面闡述本文的目標以及該示例程式為初級開發...