亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 6213 | 回復(fù): 3
打印 上一主題 下一主題

是否能自定義多個(gè)字段組成的主鍵在Memcache表? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-07-26 15:46 |只看該作者 |倒序?yàn)g覽
傳說中
 Memcache_engine是一個(gè)MySQL 5.1數(shù)據(jù)庫的存儲(chǔ)引擎,它能夠讓用戶通過標(biāo)準(zhǔn)的SQL語句(SELECT/UPDATE/INSERTE/DELETE)訪問Memcached(還支持新浪的Memcachedb、dbcached)中存放的數(shù)據(jù)。

  限制:
  1、Memcache表必須有主鍵。
  2、只能使用主鍵去查詢,即只能使用SELECT ... FROM ... WHERE id = ... 方式去查詢。
  3、不支持自增ID。

問題:
1 是否能自定義多個(gè)字段組成的主鍵在Memcache表
2 如何查詢所有字段 (不可能只是查詢一個(gè)字段的)?


參考
安裝與使用:
  1、編譯安裝memcache_engine的步驟:

cd /tmp
wget http://dev.mysql.com/get/Downloa ... 0.com/mirror/mysql/
tar zxvf mysql-5.1.26-rc.tar.gz
#安裝、配置MySQL的步驟省略,注意不要以靜態(tài)方式編譯安裝。

wget http://download.tangent.org/libmemcached-0.23.tar.gz
tar zxvf libmemcached-0.23.tar.gz  
cd libmemcached-0.23/
./configure --prefix=/usr/local/memcache_engine
make
make install
cd ../

wget http://xmlsoft.org/sources/libxml2-2.6.32.tar.gz
tar zxvf libxml2-2.6.32.tar.gz
cd libxml2-2.6.32/
./configure --prefix=/usr/local/memcache_engine
make
make install
cd ../

wget http://download.tangent.org/libxmlrow-0.2.tar.gz
tar zxvf libxmlrow-0.2.tar.gz
cd libxmlrow-0.2/
export PKG_CONFIG_PATH=/usr/local/memcache_engine/lib/pkgconfig/
./configure --prefix=/usr/local/memcache_engine
make
make install
cd ../

wget http://download.tangent.org/memcache_engine-0.7.tar.gz
tar zxvf memcache_engine-0.7.tar.gz
cd memcache_engine-0.7/
sed -i "s#uint16_t#uint32_t#g" ./src/ha_memcache.cc
export PKG_CONFIG_PATH=/usr/local/memcache_engine/lib/pkgconfig/
./configure --prefix=/usr/local/memcache_engine --with-mysql=/tmp/mysql-5.1.26-rc
make
make install
cd ../
./configure --prefix=/usr/local/memcache_engine --with-mysql=/tmp/mysql-5.1.26-rc
  注意:紅色標(biāo)記部分為MySQL 5.1.22以上版本的源碼路徑。

  2、拷貝libmemcache_engine.so到MySQL默認(rèn)插件目錄(假設(shè)MySQL安裝在/usr/local/mysql目錄下):

mkdir -p /usr/local/mysql/lib/mysql/plugin/
cp /usr/local/memcache_engine/lib/libmemcache_engine.so.0.0.0 /usr/local/mysql/lib/mysql/plugin/libmemcache_engine.so
  3、安裝libmemcache_engine.so插件的SQL語句:

INSTALL PLUGIN memcache SONAME 'libmemcache_engine.so';
  4、查看libmemcache_engine.so插件是否安裝成功的SQL語句:

SELECT * FROM mysql.plugin;
SHOW PLUGINS;
  5、創(chuàng)建一張memcache_engine表的SQL語句:

CREATE TABLE `table` (
`id` int(11) NOT NULL DEFAULT '0',
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MEMCACHE DEFAULT CHARSET=latin1
CONNECTION='localhost:11211';
http://forum.z27315.com/topic/22 ... %E4%BD%BF%E7%94%A8/

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2011-07-26 17:03 |只看該作者
本帖最后由 liyihongcug 于 2011-08-04 13:33 編輯

http://www.wenan8.com/blog/archives/313MEMCACHE 就是一個(gè)鍵值對(duì)。
但CREATE TABLE `table` (
`id` int(11) NOT NULL DEFAULT '0',
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MEMCACHE DEFAULT CHARSET=latin1
CONNECTION='localhost:11211';
很難以理解 ,難道 他支持在一個(gè)memcache服務(wù)器上放多張表 ?

問題:
1 是否能自定義多個(gè)字段組成的主鍵在Memcache表

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2011-07-26 17:03 |只看該作者
本帖最后由 liyihongcug 于 2011-08-04 13:32 編輯

memcached是一個(gè)高性能的分布式的內(nèi)存對(duì)象緩存系統(tǒng),通過在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨大的hash表,它能夠用來存儲(chǔ)各種格式的數(shù)據(jù),包括圖像、視頻、文件以及數(shù)據(jù)庫檢索的結(jié)果等。最初為了加速 LiveJournal 訪問速度而開發(fā)的,后來被很多大型的網(wǎng)站采用。起初作者編寫它可能是為了提高動(dòng)態(tài)網(wǎng)頁應(yīng)用,為了減輕數(shù)據(jù)庫檢索的壓力,來做的這個(gè)緩存系統(tǒng)。它的緩存是一種分布式的,也就是可以允許不同主機(jī)上的多個(gè)用戶同時(shí)訪問這個(gè)緩存系統(tǒng), 這種方法不僅解決了共享內(nèi)存只能是單機(jī)的弊端, 同時(shí)也解決了數(shù)據(jù)庫檢索的壓力,最大的優(yōu)點(diǎn)是提高了訪問獲取數(shù)據(jù)的速度!基于memcached作者對(duì)分布式cache的理解和解決方案。 memcached完全可以用到其他地方 比如分布式數(shù)據(jù)庫, 分布式計(jì)算等領(lǐng)域。

1、 memcached 協(xié)議理解
memcache是為了加快http://www.livejournal.com/訪問速度而誕生的一個(gè)項(xiàng)目。
它的官方主頁是:http://www.danga.com/memcached/
目前在網(wǎng)站開發(fā)中應(yīng)用較少,主要的應(yīng)用有:

http://www.danga.com/memcached/users.bml

在國(guó)內(nèi)的網(wǎng)站開發(fā)中,還很少?zèng)]見到有應(yīng)用的,中文資料十分匱乏。
工作機(jī)制:通過在內(nèi)存中開辟一塊區(qū)域來維持一個(gè)大的hash表來加快頁面訪問速度,和數(shù)據(jù)庫是獨(dú)立的。但是目前主要用來緩存數(shù)據(jù)庫的數(shù)據(jù)。允許多個(gè) server通過網(wǎng)絡(luò)形成一個(gè)大的hash,用戶不必關(guān)心數(shù)據(jù)存放在哪,只調(diào)用相關(guān)接口就可。存放在內(nèi)存的數(shù)據(jù)通過LRU算法進(jìn)行淘汰出內(nèi)存。同時(shí)可以通過刪除和設(shè)置失效時(shí)間來淘汰存放在內(nèi)存的數(shù)據(jù)。
2、 memcached 使用入門
2.1 memcached的安裝
?<1>memcached服務(wù)的安裝
先檢查linux內(nèi)核版本,建議將memcached 安裝在2.6以上。
因?yàn)閙emcached 需要用到libevent和 epoll 。
memcached安裝前首先確定你的服務(wù)器上面安裝了libevent庫,
libevent下載地址( http://www.monkey.org/~provos/libevent/)。
下載memcached的源碼( http://www.danga.com/memcached/download.bml)。
Memcached最初是用perl寫的,現(xiàn)在的版本是用c寫的。
下載后拷貝到一個(gè)目錄,安裝需要root用戶來執(zhí)行
tar -zxvf memcached-1.1.12.tar.gz
cd memcached-1.1.12
./configure
這里必須先要configure, 它會(huì)檢測(cè)你的系統(tǒng)情況,然后生成一個(gè)config.h文件和其它的幾個(gè)文件,另外和其它的configure一樣,你可以配置它的安裝路徑等等。默認(rèn)應(yīng)用程序安裝在/usr/local/bin目錄下。
make //編譯
make install //安裝
<2>memcached客戶端的安裝
根據(jù)memcached協(xié)議,用戶可以自己寫出符合自己要求的客戶端程序。目前http://www.danga.com/memcached/download.bml
提供perl,c,java,python,php等客戶端程序供下載和參考。下面我就以perl客戶端程序?yàn)槔f明客戶端的安裝:
下載后拷貝到一個(gè)目錄,安裝需要root用戶來執(zhí)行
tar -zxvf Cache-Memcached-1.14.tar.gz
cd Cache-Memcached-1.14
perl makefile.pl
make
make install
make test
這樣就安裝好了memcahced, 啟動(dòng)memcached就可使用分布式緩存系統(tǒng)了!
2.2 快速入門
<1> memcached服務(wù)的啟動(dòng)
memcached的啟動(dòng)非常簡(jiǎn)單,它沒有配置文件,只要配置好幾個(gè)參數(shù)就可以使用了。下面我以一個(gè)實(shí)際應(yīng)用的例子,具體說明一下:
memcached –d –m 500 -l 64.128.191.151 -p 11211 -vv >>/var/www/kelly/test/logs/memcached_$$.log
啟動(dòng)的這個(gè)memcached為一個(gè)后臺(tái)守護(hù)進(jìn)程模式(-d), 然后緩存的空間為500M(-m), 監(jiān)聽(-l)服務(wù)器64.128.191.15的11211號(hào)端口(-p).,將日志寫道/var/www/kelly/test/logs /memcached_$$.log(-vv)。
其實(shí)memcached的參數(shù)也非常的有限,就下面這幾個(gè):
? -p port number to listen on
? -l interface to listen on, default is INDRR_ANY
? -d run as a daemon
? -r maximize core file limit
? -u assume identity of (only when run as root)
? -m max memory to use for items in megabytes, default is 64 MB
? -M return error on memory exhausted (rather than removing items)
? -c max simultaneous connections, default is 1024
? -k lock down all paged memory
? -v verbose (print errors/warnings while in event loop)
? -vv very verbose (also print client commands/reponses)
? -h print this help and exit
? -i print memcached and libevent license
我們也可以將這個(gè)啟動(dòng)腳本寫道/etc/rc.d或者/erc/rc.local,這樣可以在服務(wù)器啟動(dòng)時(shí)候執(zhí)行。
<2> memcached客戶端的連接
下面我就以perl客戶端程序?yàn)槔f明客戶端的連接:
啟動(dòng)兩個(gè)memcached server
memcached –d –m 500 -l 64.128.191.151 -p 11211 -vv >>/var/www/kelly/test/logs/memcached_$$.log
memcached –d –m 500 -l 64.128.191.151 -p 11212 -vv >>/var/www/kelly/test/logs/memcached_$$.log
perl客戶端程序
#!/usr/bin/perl
use Cache::Memcached;
my $memd = new Cache::Memcached {
‘servers’ => [ "64.128.191.15:11211" , "64.128.191.15:11212"],
};
my $val = $memd->get( “my_key” );
if ( $val )
{
print “Value is ‘$val’\n”;
}
# Set a value
$memd->set(“my_key”, “123″);
$memd->disconnect_all();
?運(yùn)行測(cè)試
$ perl test-memcache.pl
$ perl test-memcache.pl
Value is ’123′
可以看到,第一次沒有取得my_key,第二次從memcached中得到my_key的值。
同時(shí)通過查看日志,可以發(fā)現(xiàn)的確存儲(chǔ)在兩個(gè)memcache server中。
這個(gè)簡(jiǎn)單的例子,解釋了如何在memcached中存取數(shù)據(jù),以及memcache是真正的分布式緩存系統(tǒng)。
當(dāng)然,這還只是很簡(jiǎn)單的例子,體現(xiàn)不出memcache的優(yōu)勢(shì),下面將通過一個(gè)很具體的例子,給出詳細(xì)的應(yīng)用。
3、 memcached在Zorpia的應(yīng)用
http://www.zorpia.com 是一個(gè)網(wǎng)頁相冊(cè),博客,交友,論壇的大型網(wǎng)站公司,F(xiàn)在已有超過140萬活躍使用者遍布美國(guó),香港,東南亞,歐洲,澳洲,亞洲等其它地區(qū)。每天的訪問量都在增長(zhǎng),已成為全世界排名第五的社會(huì)生活關(guān)系網(wǎng)。
Memcached也采用了memcached來提高網(wǎng)站的訪問速度,并且取得了很好的效果,我在負(fù)責(zé)zorpia的memcached項(xiàng)目時(shí)候積累了一些經(jīng)驗(yàn),主要的做法如下:
1) 通過對(duì)memcache的perl客戶端進(jìn)行包裝,定制自己的客戶端。
2) 通過制定符合zorpia規(guī)范的hash key命名規(guī)范
? ? memcache中需要存儲(chǔ)的內(nèi)容的key均由string組成。
這個(gè)string統(tǒng)一由一個(gè)memcache.pm的subroutine來實(shí)現(xiàn)。(假設(shè)這個(gè)subroutine是 get_key() )
? ? memcache中存放兩種形式的數(shù)據(jù)
(1) result of SQL query :
(2) 普通變量(variable)
這兩種數(shù)據(jù)的key的組合方式是不相同的,由get_key進(jìn)行判斷和完成
? ? 關(guān)于get_key 和 naming rule
get_key subroutine完成所有memcache key的命名,naming rule也是在它里邊體現(xiàn):
(1)輸入?yún)?shù) -- hash結(jié)構(gòu),里邊定義了當(dāng)前需要存放的數(shù)據(jù)的信息
結(jié)構(gòu)
(2)返回值 -- string,返回?cái)?shù)據(jù)的key_name
?必須確定 get_key 的傳入hash的結(jié)構(gòu),
hash中主要有兩個(gè)元素
type — 定義當(dāng)前數(shù)據(jù)結(jié)構(gòu)的類型 ,有 ‘var’ , ‘sql’兩種值
object — 存放當(dāng)前數(shù)據(jù)結(jié)構(gòu)的詳細(xì)信息,
當(dāng) type eq ‘var’時(shí),object表示變量的名字,該名字由程序員指定
當(dāng) type eq ‘sql’時(shí),object包含所存放sql的主要基本信息,hash結(jié)構(gòu),也由程序員按照規(guī)則制定
## 當(dāng)variable 數(shù)據(jù)類型,比較簡(jiǎn)單
$var_hash = {
type => ‘var’, ## var表示當(dāng)前類型是 variable
object => ‘language’, ## language代表variable的名字
};
生成的key是Zorpia::var| language
## sql 數(shù)據(jù)
比如select first_name from user where user_id =2那么hash為
$sql_hash = {
type => ‘sql’,
object => {
table => {table2=>”user”,}, ## sql 查詢的表
column => {column1=>”first_name”,}, ## sql所要查詢的column
condition => { user_id =>”2″,}, ## sql條件
},
};
生成的key是Zorpia::sql|user|first_name| user_id =2
get_key subroutine必須對(duì)傳入hash進(jìn)行判斷,對(duì)不同類型的數(shù)據(jù)按照不同的方式組合,形成key,返回給使用者。這個(gè)key,必須保證其唯一性:
比如:所有字母小寫,一些數(shù)組在組合成key之前必須首先排序
? ? get_key函數(shù)
sub get_key{
my $hash = shift;
return undef unless $hash && ref $hash eq “HASH”;
my $type = $hash->{type};
my $key_name;
if ($type eq ‘sql’) {
my ($table_key,$column_key,$condition_key);
$table_key=_get_key($hash->{object}->{table});
$column_key=_get_key($hash->{object}->{column});
$condition_key=_get_key($hash->{object}->{condition});
$key_name = join(‘|’,$type,$table_key,$column_key,$condition_key);
#Currently the length limit of a key is set at 250 characters
if (length($key_name)>250)
{
$key_name=substr(0,250,$key_name);
}
}
elsif($type eq ‘var’)
{
$key_name = join(‘|’,$type,$hash->{object});
}
return $key_name;
}
sub _get_key
{
my $hash=shift;
return undef unless $hash && ref $hash eq “HASH”;
my ($t,$ret,$i);
foreach $i (sort keys %$hash)
{
$i=~s/^\s+|\s+$//g;
$hash->{$i}=~s/^\s+|\s+$//g;
push(@$t,lc(“$i=$hash->{$i}”));
}
$ret=join(‘:’,sort { $a cmp $b } @$t);
return $ret;
}
3) 制定需要應(yīng)用memcached的規(guī)則
?經(jīng)常訪問的表user,user_details
?合理設(shè)定變量在memcached的生存周期
?將活躍用戶的信息預(yù)先導(dǎo)入到memcached
?分別在多臺(tái)機(jī)器上啟動(dòng)多個(gè)memcached服務(wù)
?編寫腳本監(jiān)控memcached服務(wù)是否活動(dòng)
4) User表的具體應(yīng)用舉例
? 在 select時(shí)候
先查詢memcahce里有沒有,有的話,返回;否則從數(shù)據(jù)庫select,在memcache里設(shè)置,返回。
my $sql_hash = {
type => ‘sql’,
object => {
table => {table1=>”user”,},
column => {column1=>”user_id”,},
condition => {email=>$user_id,},
},
};
my $key=Zorpia::MemCache::get_key($sql_hash);
my $user_id_by_email=Zorpia::MemCache::get($key);
if(!$user_id_by_email)
{
my $sth;
my $query =”select user_id from user where email=?”;
$sth = $dbh->prepare($query);
$sth->execute($user_id);
my $user1 = $sth->fetchrow_hashref();
$user_id_by_email=$user1->{‘user_id’};
Zorpia::MemCache::set($key,$user_id_by_email,1800);
}
?在 update,insert,delete時(shí)候
先在數(shù)據(jù)庫update,insert,delete,在memcache里設(shè)置,返回。
&Zorpia:B::data_entry_no_return($dbh,”user”,”COUNT(*)”,”$account_information_insert_statement user_id=$current_user_id”, “user_id=$current_user_id”);
#add by kelly
my $sql_hash = {
type => ‘sql’,
object => {
table => {table1=>”user”,},
column => {column1=>”user_id”,},
condition => {user_id=>$current_user_id,},
},
};
my $key=Zorpia::MemCache::get_key($sql_hash);
my $query = “SELECT *, user_id AS id FROM user WHERE user_id=?”;
my $sth_memc = $dbh->prepare($query);
$sth_memc->execute($current_user_id);
my $user_memc = $sth_memc->fetchrow_hashref();
&Zorpia::MemCache::set($key,$user_memc,21600);
4、 memcached的應(yīng)用展望
使用了memcached以后, 我發(fā)現(xiàn)以前做過的很多的項(xiàng)目都可以應(yīng)用它提高效率,包括最近做的“大單追蹤”, “數(shù)碼搜索”等等。當(dāng)然既然memcahced是分布式的緩存系統(tǒng),那么它就是建立了一個(gè)分布式的平臺(tái), 我們可以用它來進(jìn)行分布式的記數(shù), 因?yàn)閷?duì)于一個(gè)鍵值key我們可以設(shè)置它的數(shù)值以及有效期在參數(shù)中,另外還可以重新設(shè)置這個(gè)鍵值的數(shù)值。 所以我總結(jié)了一下目前可以應(yīng)用到的地方:
<1>.數(shù)據(jù)庫檢索結(jié)果的緩存,也就是說可以有機(jī)的和數(shù)據(jù)庫結(jié)合起來應(yīng)用,提高效率。
這也是目前memcached用到的最多的地方,比如用于大型網(wǎng)站等。
可以這樣來實(shí)現(xiàn):
打開memcached服務(wù)器連接
編寫sql語句, 同時(shí)算出它的一個(gè)hash key值
獲取這個(gè)hash值的memcached保存數(shù)據(jù)(get)
如果獲取的這個(gè)hash值的數(shù)據(jù)存在。返回
否則連接數(shù)據(jù)庫查找
把這個(gè)查找結(jié)果保存在memcached中(set),可以設(shè)置有效期
返回查找結(jié)果
<2>.分布式計(jì)算
<3>.分布式共享數(shù)據(jù)
總之,memcached的機(jī)制比較靈活,可以適用于一切需要分布式緩存數(shù)據(jù)的地方,隨著memcached逐漸為人所知,必將在更多的分布式應(yīng)用領(lǐng)域大放異彩。 表

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2011-08-04 13:40 |只看該作者
本帖最后由 liyihongcug 于 2011-08-04 13:51 編輯

MySQL user conference and expo 大會(huì)上發(fā)布的 MySQL 5.6.2 測(cè)試版本,該版本最值得關(guān)注的便是對(duì) NoSQL 技術(shù)的支持,盡管目前還是實(shí)驗(yàn)階段,該技術(shù)使得 MySQL 內(nèi)置 NoSQL 技術(shù),該技術(shù)可減少 memcached 的查詢延遲。在單臺(tái)機(jī)器中,NoSQL 當(dāng)前只適用一張 InnoDB 表,但未來將支持多個(gè)表。在 memcached 中的 key 和 value 分別對(duì)應(yīng)表中的相應(yīng)字段,同時(shí)可為 key 定義多列的值。所有這些數(shù)據(jù)都存儲(chǔ)在一張 InnoDB 表,可通過 SQL 命令來進(jìn)行檢索和修改。目前集成 memcached 守護(hù)進(jìn)程的版本只能用于 Linux。

這么說來一個(gè)memcache服務(wù)職能支持一個(gè)表  因?yàn)橐粋(gè)主鍵id的限制。導(dǎo)致功能拓展弱

memcache_engine + memcachedb = 高性能分布式內(nèi)存數(shù)據(jù)庫
memcachedb是一個(gè)由新浪網(wǎng)的開發(fā)人員開放出來的開源項(xiàng)目,給memcached分布式緩存服務(wù)器添加了Berkeley DB的持久化存儲(chǔ)機(jī)制和異步主輔復(fù)制機(jī)制,讓memcached具備了事務(wù)恢復(fù)能力、持久化能力和分布式復(fù)制能力,非常適合于需要超高性能讀寫速度,但是不需要嚴(yán)格事務(wù)約束,能夠被持久化保存的應(yīng)用場(chǎng)景,例如memcachedb被應(yīng)用在新浪博客上面。

memcachedb給memcached添加了一些數(shù)據(jù)庫才具備的特性,但是我們還不能說memcachedb已經(jīng)是一個(gè)數(shù)據(jù)庫了,這是因?yàn)?memcached不支持內(nèi)存對(duì)象的遍歷操作,當(dāng)然更加不能支持復(fù)雜的查詢操作,只能支持根據(jù)已知的key去查詢對(duì)應(yīng)的value。因此如果想把 memcachedb當(dāng)成一個(gè)高性能的分布式內(nèi)存數(shù)據(jù)庫來使用的話,查詢的問題就沒有辦法解決,只能在應(yīng)用程序里面配合其他方案做一些折衷。

然而memcached的另外一個(gè)開源項(xiàng)目完美的填補(bǔ)了這一個(gè)缺陷,就是memcache_engine。

memcache_engine是一個(gè)MySQL數(shù)據(jù)庫的存儲(chǔ)引擎,目前只支持MySQL5.1數(shù)據(jù)庫,他能夠把memcachedb作為MySQL數(shù)據(jù)庫的一個(gè)存儲(chǔ)引擎和MySQL集成起來,讓用戶通過標(biāo)準(zhǔn)的SQL查詢語句訪問memcachedb中存放的數(shù)據(jù),請(qǐng)看如下示例:

Sql代碼 復(fù)制代碼

   1. CREATE TABLE `a` (   
   2.     `a` int(11) NOT NULL DEFAULT '0',   
   3.     `b` int(11) DEFAULT NULL,   
   4.     `c` int(11) DEFAULT NULL,   
   5.     PRIMARY KEY (`a`)   
   6.     ) ENGINE=MEMCACHE DEFAULT CHARSET=latin1   
   7. CONNECTION='localhost:6666\;localhost:6688';  

CREATE TABLE `a` (
`a` int(11) NOT NULL DEFAULT '0',
`b` int(11) DEFAULT NULL,
`c` int(11) DEFAULT NULL,
PRIMARY KEY (`a`)
) ENGINE=MEMCACHE DEFAULT CHARSET=latin1
CONNECTION='localhost:6666\;localhost:6688';



創(chuàng)建表a,存放在分布式memcached server:localhost:6666和localhost:6688當(dāng)中。然后我們就可以使用標(biāo)準(zhǔn)的SQL語句隨意的進(jìn)行CRUD操作去使用 memcachedb了,這實(shí)在是太酷了!有了memcache_engine,我們就可以用SQL去訪問memcached,有了 memcachedb,我們就不必?fù)?dān)心數(shù)據(jù)丟失問題,事務(wù)恢復(fù)問題了,簡(jiǎn)直是絕配,讓memcached真正成為了一個(gè)高性能的分布式數(shù)據(jù)庫系統(tǒng)了。目前 memcache_engine項(xiàng)目還是早期試驗(yàn)階段,讓我們期待memcache_engine項(xiàng)目早日發(fā)布正式版本吧!

順便多說幾句:最近一年來,特別是最近一個(gè)月以來,圍繞memcached的開源項(xiàng)目發(fā)展的非常非;钴S:

1、最近剛剛發(fā)布了memcached的新的高性能C客戶端接口: libmemcached

2、由于有了libmemcached,該組織又發(fā)布了memcache_engine存儲(chǔ)引擎,cool!

3、由于libmemcached的發(fā)布,不到一周時(shí)間,ruby的兩個(gè)嶄新的memcache client就問世了,他們是Caffeine和New memcache-client,讓ruby訪問memcached的速度大幅度提高,請(qǐng)看:libmemcached發(fā)布了,ruby訪問memcached提速20倍

4、memcachedb發(fā)布了,這是中國(guó)的互聯(lián)網(wǎng)公司貢獻(xiàn)的開源項(xiàng)目

以上幾個(gè)項(xiàng)目都是在2008年1月發(fā)布的,真的不是一般的繁榮阿。再加上之前發(fā)布的新的支持異步訪問的Java Memcached API和C#接口,可以說除了Python,其他主流非主流編程語言都可以使用memcached了。其實(shí)即便是Python還沒有公布出來的開源接口,我們也知道國(guó)內(nèi)的web2.0網(wǎng)站豆瓣就是使用Python訪問memcached,并且支持了極大的訪問量,因此目前圍繞memcached的開源項(xiàng)目發(fā)展的情況非常的繁榮。

memcached最近兩年這么受歡迎,其實(shí)和互聯(lián)網(wǎng)web2.0的流行有很大的關(guān)系,web2.0網(wǎng)站通常需要個(gè)性化頁面,依賴于頁面局部和數(shù)據(jù)細(xì)顆粒度的緩存來提升性能,并且web2.0網(wǎng)站流量都很大,因此memcached這種高性能分布式緩存服務(wù)器就大行其道了。

當(dāng)然我覺得最具有**意義的還是memcache_engine和memcachedb這兩個(gè)項(xiàng)目的發(fā)布,他們能夠讓memcached的用途不僅僅限于緩存服務(wù)器而已,而是能夠真正充當(dāng)分布式數(shù)據(jù)庫來使用了,這無異是諸多大流量web2.0網(wǎng)站和開發(fā)人員的福音阿。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP