有关Redis的Add和Set方法的比较

测试发现,如果key已经存在,则调用Redis.Add(key, value)则不能添加或修改此key的内容value;

这样的话,我们在添加一个key和value的时候,不得不判断一次ContainsKey(key),

这样的话,就引起了两次搜索Reids的Hash Table的过程。

问题在于:
为何Redis到底有没有提供类似Dictionary的一个搜索 + 取地址的函数TryGetValue(key, out value) , 这样就至少节约了一半时间。

问题已经解决:
测试发现Redis的方法Set(key, value), 就相当于字典Dictionary.TryGetValue(key, out value)。
完全实现了一次搜索,既可以新增数据 和 同时修改数据(如果之前key不存在)。

修改后的测试,接口ICacheHelper.SetCacheData()性能如下: (废弃ContainsKey方法判断KEY)

时间: 2024-10-25 17:29:00

有关Redis的Add和Set方法的比较的相关文章

java 学习之List 的 add 与set方法区别

/** * 在List集合中众多方法中,add(int index,Object obj)方法与set(int index,Object e)方法不易区分 * ,通过下面实例,可以看出两个方法中的区别 */ package gao; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class CollectionDemo { public static void main(

Redis 第二种安装部署方法

Redis 第二种安装部署方法

QT实现appendSheet(QAxObject的一种Add + Move的方法)

一般地,熟悉VB.VC的同学都知道,要将新增的excel表单添加到表单的末尾,是很简单的事情,直接调用Add函数,传入对应的函数形参,就能实现将新增表单插入到末尾,但是通过QT的QAxObject实现appendSheet()却不是那么容易的事情,因为上述的Add函数不奏效,经过多次试验尝试,发现通过Add函数新增的表单只能插入到某一表单的前面,而不能添加到表单的尾部,那怎么办呢?我这里采用了一种Add + Move的方法,实现appendSheet的功能,也就是通过Add新增一个sheet,然

ThinkPHP中add()方法的返回值

在处理业务数据的时候,有时会遇到需要取得刚insert的数据的主键id值. 以前的做法都是先插入数据后,再通过查询获得id值. 后来在学习ThinkPHP开发的时候才知道,add()方法在写入成功后得返回值就是新增数据的主键值. 减少了代码量.

JAVAAPI学习之Calendar类;Calendar类set()、add()、roll()方法区别

JAVAAPI学习之Calendar类 http://blog.csdn.net/myjlvzlp/article/details/8065775(写的很好,清晰易懂) Calendar类set().add().roll()方法区别 http://www.360doc.com/content/15/0616/16/25883431_478549940.shtml http://blog.csdn.net/csdnbenbenchong/article/details/7010908

基于redis的处理session的方法

一个基于redis的处理session的方法,如下. 1 <?php 2 class Session_custom { 3 private $redis; // redis实例 4 private $prefix = 'sess_'; // session_id前缀 5 6 // 会话开始时,会执行该方法,连接redis服务器 7 public function open($path, $name) { 8 $this->redis = new Redis(); 9 return $this-

HashSet——add remove contains方法底层代码分析(hashCode equals 方法的重写)

引言:我们都知道HashSet这个类有add   remove   contains方法,但是我们要深刻理解到底是怎么判断它是否重复加入了,什么时候才移除,什么时候才算是包括????????? add()方法 首先我们看下这个代码 1 package com.xt.set; 2 3 import java.util.HashSet; 4 import java.util.Iterator; 5 import java.util.Set; 6 7 public class AddTest { 8

memcache中的add和set方法区别

相信大家对memcache都不陌生,在项目中也经常使用memcache作为缓存方案,那么在使用过程中有没有发现为什么memcahce有两个添加缓 存的方法:一个是add,一个是set,那么你知道这2个方法有什么不同吗?什么时候该使用add?什么时候该使用set呢? 对于这点以前自己也没有去深究,只知道要添加缓存的用set就可以了,好像大多数时候使用的都是set方法,而add好像很少去使用.前几天和一个朋友聊天提起过这个,今晚在这里就记录一下这2个方法之间的不同. 1.memcache::add

ArrayList的add(E e)方法与扩容

ArrayList是Java开发中经常用到的集合类,它是List接口的实现类,具有很高的查询性能,但不是线程安全的.本文主要讲述了ArrayList的add(E e)方法及该方法中涉及到的容量扩容技术. 本文大纲 1.ArrayList底层数据结构 2.add(E e)方法流程概览 3.add(E e)方法与扩容源码分析 说明:本文对ArrayList的源码分析是基于JDK8. 1.ArrayList底层数据结构 ArrayList的底层数据结构为一个Object数组,对应到源码中是: tran