<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢(mèng)蝶

    生活、程序、未來
       :: 首頁(yè) ::  ::  :: 聚合  :: 管理
        XMemcached發(fā)布1.1.2版本,這一版本仍然是1.1.0版本以來的改進(jìn)版本,主要的改進(jìn)如下:

    1.支持設(shè)置memcached節(jié)點(diǎn)權(quán)重,權(quán)重高的負(fù)載相應(yīng)比較大。

    2.為部分協(xié)議添加noreply選項(xiàng),memcached 1.2.5引入了noreply支持,部分文本協(xié)議(如存儲(chǔ),刪除,incr/decr等)允許附加設(shè)置一個(gè)noreply,表示客戶端不要求memcached應(yīng)答。這一特性利于批量處理。

    3.支持與spring框架的集成

    4.添加verbosity協(xié)議,這個(gè)協(xié)議用于讓客戶端設(shè)置memcached的日志輸出級(jí)別。

    5.一些細(xì)節(jié)改進(jìn)。XMemcached從0.5開始就有重連機(jī)制,在連接意外斷開的情況下會(huì)不斷地自動(dòng)重連,不過間隔是10秒,現(xiàn)在改成將間隔縮小為0秒以便客戶端能及時(shí)連接。改進(jìn)了JMX支持,可以通過JMX查看節(jié)點(diǎn)權(quán)重和動(dòng)態(tài)設(shè)置節(jié)點(diǎn)權(quán)重。

    6.BUG修復(fù),包括:Issue 35、Issue 36、Issue 37、Issue 38等,具體請(qǐng)看這里

    7.去除了對(duì)spy-2.4.jar依賴,現(xiàn)在序列化部分已經(jīng)不再需要spymemcached的這個(gè)jar包。


    項(xiàng)目主頁(yè):http://code.google.com/p/xmemcached/
    下載地址:http://code.google.com/p/xmemcached/downloads/list
    wiki地址:http://code.google.com/p/xmemcached/w/list


        下面是關(guān)于特性的詳細(xì)說明,首先是權(quán)重的使用,看例子:
        MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("localhost:12000 localhost:12001"),new int[]{1,3});
        MemcachedClient memcachedClient
    =builder.build();
       
        現(xiàn)在的XMemcachedClientBuilder允許傳入了兩個(gè)參數(shù),一個(gè)是InetSocketAddress組成的列表,一個(gè)是權(quán)重的數(shù)組,權(quán)重?cái)?shù)組的元素與列表中的地址一一對(duì)應(yīng),例如這里就是將"localhost:12000"節(jié)點(diǎn)的權(quán)重設(shè)置為1,而將"localhost:12001"的權(quán)重設(shè)置為3。同樣在XMemcachedClientMBean中添加了兩個(gè)新的方法:

        
    public void addOneServerWithWeight(String server, int weight)
                
    throws IOException;


        
    /**
         * Set a memcached server's weight
         * 
         * 
    @param server
         * 
    @param weight
         
    */
        
    public void setServerWeight(String server, int weight);

        用于動(dòng)態(tài)添加和修改節(jié)點(diǎn)的權(quán)重。

        其次,為了支持noreply選項(xiàng),MemcachedClient接口引入了系列xxxWithNoReply方法,例如
    public abstract void setWithNoReply(final String key, final int exp,
                
    final Object value) throws InterruptedException, MemcachedException;

        
    public abstract <T> void setWithNoReply(final String key, final int exp,
                
    final T value, final Transcoder<T> transcoder)
                
    throws InterruptedException, MemcachedException;

    public abstract void addWithNoReply(final String key, final int exp,
                
    final Object value) throws InterruptedException, MemcachedException;
    public abstract void replaceWithNoReply(final String key, final int exp,
                
    final Object value) throws InterruptedException, MemcachedException;
    public void deleteWithNoReply(final String key)
                
    throws InterruptedException, MemcachedException;

       完整的列表請(qǐng)看changelog.txt, noreply系列方法非常適合于批量處理,比之需要等待memcached應(yīng)答的效率上提升很多。

       第三,與spring的集成,通過XMemcachedClientFactoryBean可以很方便地與spring框架集成,最簡(jiǎn)單的配置如下:
       <bean name="memcachedClient"
            class
    ="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean">
            
    <property name="servers">
                
    <value>localhost:12000 localhost:12001</value>
            
    </property>
        
    </bean>
      
       只要設(shè)置servers屬性,那么就可以在任何需要的地方引用memcachedClient這個(gè)Bean.更完整的配置參考wiki

       第四,引入了對(duì)verbosity協(xié)議的支持,通過兩個(gè)新方法:
        public void setLoggingLevelVerbosity(InetSocketAddress address, int level)
                
    throws TimeoutException, InterruptedException, MemcachedException;

        
    public void setLoggingLevelVerbosityWithNoReply(InetSocketAddress address,
                
    int level) throws InterruptedException, MemcachedException;
       
       其中的level就是日志級(jí)別。請(qǐng)注意你的memcached版本是否支持這一協(xié)議。

        1.1.2是一個(gè)承前啟后的版本,按俺的計(jì)劃應(yīng)該還有個(gè)1.1.3(專注性能改進(jìn)和優(yōu)化),之后才是實(shí)現(xiàn)了二進(jìn)制協(xié)議的1.2.0。俺非常希望能有任何人給出任何建議和bug反饋。






    評(píng)論

    # re: xmemcached發(fā)布1.1.2 (權(quán)重、noreply、spring集成)  回復(fù)  更多評(píng)論   

    2009-06-23 17:05 by Joshua Zhu
    圍觀此NB的memcache客戶端之茁壯成長(zhǎng)

    # re: xmemcached發(fā)布1.1.2 (權(quán)重、noreply、spring集成)  回復(fù)  更多評(píng)論   

    2009-06-25 14:37 by ymfans
    不會(huì)使用append,prepend還有withNoReply
    都會(huì)報(bào)decode error,session will be closed,line=ERROR

    請(qǐng)作者賜教,thx

    測(cè)試時(shí)都會(huì)報(bào)錯(cuò)(沒按我預(yù)期的結(jié)果走):

    memcachedClient.add("hello", 0, "dennis");
    memcachedClient.replace("hello", 0, "dennis");
    memcachedClient.append("hello", " good");
    memcachedClient.prepend("hello", "hello ");
    GetsResponse response = memcachedClient.gets("hello");
    long cas = response.getCas();
    Object value = response.getValue();
    System.out.println(value);




    而withNoReply的方法發(fā)現(xiàn)都沒有往里塞值,get(key)報(bào)錯(cuò)并返回null:

    String key = "dksdfasdf";
    String key1 = "dksdfasdf";
    memcachedClient.set(key, 0, "asdfasdf");
    memcachedClient.setWithNoReply(key, 80000, "asdfasdf");
    Thread.sleep(1000);
    System.out.println(memcachedClient.get(key));
    memcachedClient.setWithNoReply(key1, 80000, "asdfasdf");
    memcachedClient.set(key1, 0, "asdfasdf");
    Thread.sleep(1000);
    System.out.println(memcachedClient.get(key1));

    # re: xmemcached發(fā)布1.1.2 (權(quán)重、noreply、spring集成)[未登錄]  回復(fù)  更多評(píng)論   

    2009-06-25 19:47 by dennis
    @ymfans

    這是因?yàn)槟愕膍emcached版本不支持append,prepend和noreply,請(qǐng)確認(rèn)你的memcached版本

    # re: xmemcached發(fā)布1.1.2 (權(quán)重、noreply、spring集成)[未登錄]  回復(fù)  更多評(píng)論   

    2009-06-25 19:48 by dennis
    @ymfans
    這個(gè)問題的另一個(gè)方面是在memcached不支持的情況下,出錯(cuò)信息不友好,不是拋適當(dāng)?shù)漠惓#菙嚅_,這一點(diǎn)將在下個(gè)小版本中改進(jìn)。

    # re: xmemcached發(fā)布1.1.2 (權(quán)重、noreply、spring集成)  回復(fù)  更多評(píng)論   

    2009-06-26 14:00 by ymfans
    謝謝,果然是忘了檢查 memcached的版本

    # re: xmemcached發(fā)布1.1.2 (權(quán)重、noreply、spring集成)[未登錄]  回復(fù)  更多評(píng)論   

    2009-06-26 16:01 by dennis
    @ymfans
    多謝關(guān)注,有任何問題和bug請(qǐng)及時(shí)反饋,感謝使用。

    # re: xmemcached發(fā)布1.1.2 (權(quán)重、noreply、spring集成)  回復(fù)  更多評(píng)論   

    2009-11-11 21:13 by bigfanofcpp
    請(qǐng)問:
    我有兩個(gè)memcached服務(wù)器,a和b
    我寫了兩個(gè)非常簡(jiǎn)單的客戶端,c1和c2
    c1是支持.net1.1的
    c2是支持.net2.0的

    這兩個(gè)客戶端,一個(gè)是設(shè)置值,一個(gè)是讀取值;
    當(dāng)我在c1中設(shè)置的值,在c2中讀取不出來,反之亦然。
    我發(fā)現(xiàn),雖然我配置的是兩臺(tái)緩存服務(wù)器,但是c1永遠(yuǎn)寫緩存服務(wù)器a,c2永遠(yuǎn)寫緩存服務(wù)器b,麻煩你幫我分析下為什么,謝謝,我的qq是10064806,麻煩你了,再次感謝!!

    # re: xmemcached發(fā)布1.1.2 (權(quán)重、noreply、spring集成)  回復(fù)  更多評(píng)論   

    2009-11-13 17:37 by dennis
    @bigfanofcpp
    我對(duì).net不懂,無法給出任何建議。我的猜測(cè)(僅是猜測(cè)),問題可能出在序列化方面,,.net不同版本的序列化是否有什么差別。
    主站蜘蛛池模板: 亚洲午夜激情视频| 国产区卡一卡二卡三乱码免费| 亚洲桃色AV无码| 精品国产免费人成网站| 亚洲精品无码专区2| 五月天国产成人AV免费观看| 亚洲中文无韩国r级电影| 亚洲精品国产日韩无码AV永久免费网| mm1313亚洲国产精品美女| 免费播放国产性色生活片| 国产精品亚洲综合一区| a毛片免费全部播放完整成| 亚洲av永久无码精品漫画| 91久久青青草原线免费| 亚洲明星合成图综合区在线| 久久久久国色AV免费观看性色| 亚洲欧洲日韩极速播放| 亚洲av无码不卡私人影院| 国产乱子伦精品免费视频| 亚洲va久久久噜噜噜久久天堂| 久久久久久久99精品免费| 亚洲精品乱码久久久久久下载| 成**人免费一级毛片| 免费看美女午夜大片| 亚洲国产三级在线观看| 四虎在线免费视频| 亚洲国产无线乱码在线观看| 亚洲精品老司机在线观看| 久久aa毛片免费播放嗯啊| 亚洲男人天堂2022| 亚洲一区日韩高清中文字幕亚洲| 黄网站色视频免费在线观看的a站最新 | 四只虎免费永久观看| 香蕉免费看一区二区三区| 亚洲一级毛片中文字幕| 内射无码专区久久亚洲| 特级精品毛片免费观看| 亚洲国产精品精华液| 亚洲免费在线视频| 免费乱理伦在线播放| 69av免费观看|