0

マルチスレッドのJava SEアプリケーションでcouchbaseとxmemcachedクライアントを使用しています。従来の memcached がすべてのキーを適切に設定しているのに対し、couchbase は最後のいくつかのキーを保存できないことを常に観察しています。どちらの場合も、まったく同じ xmemcachedclient 構成を使用しています。

春の構成

<bean name="memcachedClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown">
<property name="configuration">
  <bean class="com.google.code.yanf4j.config.Configuration">
     <property name="handleReadWriteConcurrently" value="true" />
  </bean>
</property>
<property name="servers">
  <value>127.0.0.1:11211</value>
</property>
<!-- server's weights -->
<property name="weights">
  <list>
     <value>2</value>
  </list>
</property>
<!-- nio connection pool size -->
<!-- <property name="connectionPoolSize" value="4"></property> -->
<!-- Use binary protocol,default is TextCommandFactory -->
<property name="commandFactory">
  <bean class="net.rubyeye.xmemcached.command.BinaryCommandFactory" />
</property>
<!-- Distributed strategy -->
<property name="sessionLocator">
  <bean class="net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator" />
</property>
<!-- Serializing transcoder -->
<property name="transcoder">
  <bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder" />
</property>
<!-- ByteBuffer allocator -->
<property name="bufferAllocator">
  <bean class="net.rubyeye.xmemcached.buffer.SimpleBufferAllocator" />
</property>
</bean>

以下は、欠落しているキーをチェックする私のテストコードです

@Test
public void test100000HitMiss() 
{
    ArrayList<Integer> hits = new ArrayList<Integer>();
    ArrayList<Integer> misses = new ArrayList<Integer>();

    for(Integer i=0; i < 100000; i++)
    {
        try 
        {
            Object val = memcachedClient.get("2/C/TALAL" + i.toString());

            if(null == val)
                misses.add(i);
            else
                hits.add(i);
        } 
        catch (Exception ex) 
        {
            logger.error(ex);
        }
    }

    logger.info("Hits: " + hits.size() + " - Misses: " + misses.size());

}

このテストを実行するたびに、ミス配列に 3 つまたは 4 つのキーが表示されます

4

0 に答える 0