<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网站在线观看| 国产h肉在线视频免费观看| 啦啦啦www免费视频| 亚洲一级片在线播放| 麻豆一区二区免费播放网站| 亚洲jjzzjjzz在线观看| 一色屋成人免费精品网站| 自拍偷区亚洲国内自拍| 成人片黄网站色大片免费| 亚洲欧洲AV无码专区| 国产高清免费在线| 午夜在线免费视频 | 亚洲av无码成人精品区在线播放| 老子影院午夜伦不卡亚洲| 免费一级成人毛片| 九九免费观看全部免费视频| 亚洲最大黄色网站| 美女隐私免费视频看| 全亚洲最新黄色特级网站| rh男男车车的车车免费网站| 曰韩亚洲av人人夜夜澡人人爽| 四虎国产成人永久精品免费| 亚洲国产精品成人精品小说 | 免费亚洲视频在线观看| 日韩免费在线中文字幕| 亚洲va无码专区国产乱码| 久久国产免费福利永久| 麻豆亚洲AV成人无码久久精品 | 亚洲综合无码一区二区三区| 97热久久免费频精品99| 污网站免费在线观看| 亚洲成A人片在线观看无码不卡| 久久精品国产亚洲精品| 一级毛片免费播放| 亚洲电影免费在线观看| 国产大片91精品免费观看不卡| 33333在线亚洲| 免费国产黄网站在线观看| 亚洲国产成人九九综合| 亚洲色成人中文字幕网站| 国产一精品一AV一免费|