在做memcached存取数据的时候,我们得到XMemcachedClient实例后,向memcached中存数据的方法是 1 XMemcachedClient.set(String key,int time,Object value); 2 XMemcachedClient.add(String key,int time,Object value); 首先说,这两种方法一定都能向memcached中存数据,但是二者有什么区别呢? 上网查了很多资料,都没有看到有解释的,于是我决定自己试图测试分析一下: 测试代码: 加载spring的bean.xml文件,里面相关配置,这里不再复述 查看文本打印
- ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
- XMemcachedClient xmc=(XMemcachedClient) context.getBean("memcachedClient");
查看文本打印
- ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
- XMemcachedClient xmc=(XMemcachedClient) context.getBean("memcachedClient");
执行如下代码 查看文本打印
- System.out.println(xmc.add("hello", 0, "ppms"));
查看文本打印
- System.out.println(xmc.add("hello", 0, "ppms"));
结果为true 很正常 但是这行代码执行两次,第二次就会有错误,原因很简单,XMemcachedClient的add方法不允许key值相等,即内存中有key为hello的值了,再次执行 add方法,就会失败。而经过测试,第二次执行xmc.set("hello",0,"ppms");就不会出错,原因是set方法在缓存服务器上,没有对应的key,便新建key-value, 如果有,就替换该key对应的value值。
综上:set和add方法的不同之处是add方法不允许key值相同,如果第二次add的key相同,则存储失败,而set方法允许key相同,如果相同,则替换该key对应的value。 注:每次做测试的时候,第一次add或set后,第二次测试的时候,应该先将memcached中该key所对应的值删除掉,否则该值一直存在缓存服务器中,影响测试结果。 删除方法很简单:xmc.delete("hello");
|