`

XMemcachedClient实例的add方法和set方法区别

阅读更多

在做memcached存取数据的时候,我们得到XMemcachedClient实例后,向memcached中存数据的方法是

1 XMemcachedClient.set(String key,int time,Object value);

2XMemcachedClient.add(String key,int time,Object value);

首先说,这两种方法一定都能向memcached中存数据,但是二者有什么区别呢?

上网查了很多资料,都没有看到有解释的,于是我决定自己试图测试分析一下:

测试代码:

加载spring的bean.xml文件,里面相关配置,这里不再复述

 

        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        XMemcachedClient xmc=(XMemcachedClient) context.getBean("memcachedClient");

 

执行如下代码

 

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




 

 

分享到:
评论

相关推荐

    详解vue 实例方法和数据

    Vue 实例方法和数据 Vue 实例方法和数据是 Vue.js 框架中非常重要的两个概念。Vue 实例方法是指 Vue COMPONENT 实例对象上的方法,而数据则是指 Vue 实例对象上的数据属性。 首先,让我们来了解一下 Vue 实例方法...

    Matlab_Active-set算法和实例

    Active-set方法是一种在优化问题中解决凸二次规划(Quadratic Programming, QP)的有效算法。它主要应用于处理约束优化问题,尤其在那些包含线性不等式约束的情况下。在Matlab环境中,利用Active-set算法能够高效地...

    C# snmp get和set方法实现,含源码

    1. 创建SNMP客户端实例,配置版本、社区字符串(对于V1和V2c)或认证和加密参数(对于V3)。 2. 构建GET或SET请求PDU,包括目标OID和(对于SET)新值。 3. 发送请求并等待响应,这通常涉及到异步调用。 4. 解析响应...

    【JavaScript源代码】Vue.set()和this.$set()使用和区别.docx

    这两种方法的使用场景和区别如下: 1. **Vue.set()**: - 可以用来修改Vue实例根级别的数据,也可以用于嵌套对象的属性。例如: ```javascript const app = new Vue({ data: { a: 1, info: { name: '小明' ...

    vue $set 给数据赋值的实例

    本文详细介绍了在Vue.js框架中使用$set方法给对象动态添加新属性并确保视图更新的实例。在Vue中,如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。这是因为Vue无法检测到动态添加的属性。这时就需要...

    JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析

    本文实例讲述了JS中类的静态方法,静态变量,实例方法,实例变量区别与用法。分享给大家供大家参考,具体如下: 1.类的静态方法 先来段代码之后分析 // JS类静态函数 function BaseClass() { } // 类添加add函数 ...

    DC工具中set_dont_touch和set_size_only的区别.doc

    总结来说,`set_dont_touch` 与 `set_size_only` 的主要区别在于: 1. 应用范围:`set_dont_touch` 可作用于更广泛的实体,包括 cell、net、reference 和 design;而 `set_size_only` 只能作用于 leaf cell。 2. ...

    Java静态方法和实例方法区别详解

    在设计类和方法时,应根据它们是否需要访问实例变量以及是否与特定对象实例相关来决定使用静态还是实例方法。合理的使用静态方法和实例方法可以提高代码的可读性、可维护性和性能。在实际编程中,要根据具体需求灵活...

    Python实例方法、类方法、静态方法区别详解

    ### Python实例方法、类方法、静态方法的区别详解 在Python编程语言中,方法是与类相关的函数,它们根据其用途和定义方式分为三类:实例方法、类方法和静态方法。这三种方法各有特点,适用于不同的场景。接下来,...

    python字典setdefault方法和get方法使用实例

    为了更加形象地展示这两个方法的用法和区别,让我们通过一些示例来进行说明。 假设我们有以下字典: ```python d = {"x": 1, "y": 2} ``` 如果我们尝试获取一个字典中存在的键值: ```python print(d.get("x")) ...

    python 实例方法和类方法的应用 示例

    python 实例方法和类方法的应用 示例

    94.java方法2实例.zip

    94.java方法2实例.zip94.java方法2实例.zip94.java方法2实例.zip94.java方法2实例.zip94.java方法2实例.zip94.java方法2实例.zip94.java方法2实例.zip94.java方法2实例.zip94.java方法2实例.zip94.java方法2实例.zip...

    Level Set Methods and Dynamic Implicit Surfaces

    《Level Set Methods and Dynamic Implicit Surfaces》这本书不仅详细介绍了Level Set Methods的理论基础和计算方法,还提供了丰富的实例和应用,对于想要深入理解和应用Level Set Methods的读者来说,是一本非常有...

    ES6中Set和Map用法实例详解

    下面将详细介绍Set和Map的基本概念、用法和实例,以及它们的特性和操作方法。 ### Set数据结构详解 Set是一个类似于数组的结构,但与数组不同的是Set成员的值都是唯一的,没有重复的值。这意味着在Set集合中,任何...

    实例化Spring bean的两种工厂方法

    本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念。Spring Bean是Spring IoC容器管理的对象,这些对象的生命周期、依赖关系以及初始化行为由...

    ANSYS LS-DYNA动力分析方法与工程实例(第二版)

    《ANSYS LS-DYNA动力分析方法与工程实例(第二版)》是一部深入探讨ANSYS LS-DYNA软件在动力学分析领域的专著。该书不仅涵盖了基础理论,还提供了丰富的工程实例,旨在帮助读者理解和掌握如何利用这款强大的非线性...

    myeclipse -get set方法生成注释和字段注释以及具体设置步骤

    - 或者,你也可以在生成Getters和Setters时,勾选对话框中的“Add comments to generated methods”选项,MyEclipse会为每个生成的方法添加默认注释,但不会为字段生成注释。 3. **设置生成规则** - 要自定义...

    OpenWrt UCI详解(C和Lua语言使用uci接口实例).docx

    首先,需要包含`<uci.h>`头文件,然后使用`uci_ptr`、`uci_context`等数据结构和`uci_add_section`、`uci_set_option`等函数来读写配置。以下是一个简单的示例: ```c #include int main() { struct uci_context ...

Global site tag (gtag.js) - Google Analytics