这次在使用xmemcached的时候,应该需要保存的数据超过了1M,在向memcached存储的时候,会报出:
Cannot cache data larger than 1MB的错误。
该问题发生的原因是,在net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean中有一个字段为transcoder,
该字段默认的对象为使用:net.rubyeye.xmemcached.transcoders.SerializingTranscoder,他的默认的item的maxSize为1024*1024字节,即1M。
该字段没有提供set方法,所以只能通过构造函数参数传入的方式传入大小的设置,以字节为单位。
可以通过参数的方式改变这种配置,
具体的配置方法如下:
<bean name="mcClient" class="net.rubyeye.xmemcached.utils.XMemcachedClientFactoryBean" destroy-method="shutdown">
<property name="servers">
<value>192.168.244.128:11211</value>
</property>
<property name="connectionPoolSize" value="2"></property>
<property name="transcoder">
<bean class="net.rubyeye.xmemcached.transcoders.SerializingTranscoder">
<!--这里设置最大item的大小为4M-->
<constructor-arg index="0" value="4194304">
</constructor-arg>
</bean>
</property>
</bean>