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

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

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

    莊周夢蝶

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

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

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

    3.支持與spring框架的集成

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

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

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

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


    項目主頁: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允許傳入了兩個參數(shù),一個是InetSocketAddress組成的列表,一個是權(quán)重的數(shù)組,權(quán)重數(shù)組的元素與列表中的地址一一對應(yīng),例如這里就是將"localhost:12000"節(jié)點的權(quán)重設(shè)置為1,而將"localhost:12001"的權(quán)重設(shè)置為3。同樣在XMemcachedClientMBean中添加了兩個新的方法:

        
    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);

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

        其次,為了支持noreply選項,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;

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

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

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

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

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






    評論

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

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

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

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

    請作者賜教,thx

    測試時都會報錯(沒按我預(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)報錯并返回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ù)  更多評論   

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

    這是因為你的memcached版本不支持append,prepend和noreply,請確認(rèn)你的memcached版本

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

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

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

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

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

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

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

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

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

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

    2009-11-13 17:37 by dennis
    @bigfanofcpp
    我對.net不懂,無法給出任何建議。我的猜測(僅是猜測),問題可能出在序列化方面,,.net不同版本的序列化是否有什么差別。
    主站蜘蛛池模板: 成年女人毛片免费播放人| 国产精品亚洲精品久久精品| 亚洲成AV人片一区二区密柚| 日本亚洲国产一区二区三区| 亚洲AV日韩精品一区二区三区| 免费不卡中文字幕在线| 免费**毛片在线播放直播| 免费在线观看污网站| 亚洲AⅤ视频一区二区三区| 亚洲伊人成无码综合网| 国产亚洲精品国看不卡| 久久亚洲综合色一区二区三区| 亚洲人成网亚洲欧洲无码久久| 国产AV无码专区亚洲Av| 亚洲日本中文字幕| 亚洲精品美女久久久久| 99999久久久久久亚洲| 亚洲国产精华液2020| 特级毛片全部免费播放a一级| h视频在线免费观看| 成人av片无码免费天天看| 国产免费一区二区三区不卡| 免费视频成人片在线观看| 一色屋成人免费精品网站| 国内精品免费视频自在线| 免费人成网站7777视频| 丁香五月亚洲综合深深爱| 亚洲成人中文字幕| 亚洲av永久无码精品天堂久久 | 国内精自视频品线六区免费| 99精品全国免费观看视频| 国产免费观看网站| 亚洲综合国产一区二区三区| 久久精品国产亚洲AV高清热| 亚洲熟妇AV一区二区三区浪潮 | 亚洲综合久久综合激情久久 | 亚洲av丰满熟妇在线播放| 亚洲 欧洲 日韩 综合在线| 黄网站在线播放视频免费观看 | 国产精品亚洲精品爽爽| 在线观看免费视频网站色|