方法定义如下:

1、String    set(String key, String value)
2、String set(String key, String value, String nxxx)
3、String set(String key, String value, String nxxx, String expx, int time)
4、String set(String key, String value, String nxxx, String expx, long time)

功能都是一样的,“Set the string value as value of the key.” 将string类型的value 放到key的value上,返回值都是 String。

1、把key、value set到redis中,隐含覆盖,默认的ttl是-1(永不过期)

2、根据第三个参数,把key、value set到redis中
    nx : not exists, 只有key 不存在时才把key value set 到redis
    xx : is exists ,只有 key 存在是,才把key value set 到redis
 
3、4 和2 就相同,只是多加了个过期时间
     expx参数有两个值可选 :
          ex : seconds 秒
          px :   milliseconds 毫秒
     使用其他值,抛出 异常 : redis.clients.jedis.exceptions.JedisDataException : ERR syntax error 
    
    第五个参数就比较尴尬了,有两种可选的值,int 和long 的time,都是过期时间,那有什么不一样呢?
    
    Jedis 类的set 方法中 int和long(第五个参数)重载的方法,方法体基本一样:
public String set(final String key, final String value, final String nxxx, final String expx, final int time){
checkIsInMultiOrPipeline();
client.set(key, value, nxxx, expx, time)
return client.getStatusCodeReply();
} public String set(final String key, final String value, final String nxxx, final String expx, final long time){
checkIsInMultiOrPipeline();
client.set(key, value, nxxx, expx, time)
return client.getStatusCodeReply();
}
有什么不一样呢,其他并没有,一路源码追下去:
    
Jedis 类 --》 Client类 --》 BinaryClient  都是一样的
 
在BinaryClient 的set 方法中,对 int 和 long 的time参数,做了个 toByteArray(time),操作,打开源码,发现:

public static final byte[] toByteArray(final int value){
return SafeEncoder.encode(StringvalueOf(value));
} public static final byte[] toByteArray(final long value){
return SafeEncoder.encode(StringvalueOf(value));
}
不管是int 还是long,都转成String了,所以jedis 的最后两个重载方法,其实是一样的,(猜测:1、expx 参数是px的时候,使用long类型的参数,可以表示更多时间; 2、满足使用习惯long类型表示毫秒)
  
最后,返回值String,如果写入成功是“OK”,写入失败返回空(在nxxx的时候,也是)

jedis set 的四个重载方法(byte[]的四个自动忽略)的更多相关文章

  1. Android OpenGL ES(十四)gl10方法解析

    Android 支持 OpenGL 列表 1.GL 2.GL 10 3.GL 10 EXT 4.GL 11 5.GL 11 EXT 6.GL 11 ExtensionPack 我们将使用 GL10 这 ...

  2. C#高级功能(四)扩展方法和索引

    扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用.扩展方法被定义为静态方法,但 ...

  3. C#_02.13_基础四_.NET方法

    C#_02.13_基础四_.NET方法 一.方法概述: 方法是一块具有名称的代码.可以通过方法进行调用而在别的地方执行,也可以把数据传入方法并接受数据输出. 二.方法的结构: 方法头  AND  方法 ...

  4. Activity 重载方法 onStart和onResume、onPause和onStop的区别

    Activity 重载方法 onStart和onResume.onPause和onStop的区别 首先了解Activity的四种状态 Running状态:一个新的Activity启动入栈后,它在屏幕最 ...

  5. C# 优化程序的四十七种方法

    一.用属性代替可访问的字段 1..NET数据绑定只支持数据绑定,使用属性可以获得数据绑定的好处: 2.在属性的get和set访问器重可使用lock添加多线程的支持. 二.readonly(运行时常量) ...

  6. C#四种深拷贝方法

    //四种深拷贝方法 public static T DeepCopyByReflect<T>(T obj) { //如果是字符串或值类型则直接返回 if (obj is string || ...

  7. C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读 评论(0) 收藏

    C语言中返回字符串函数的四种实现方法 分类: UNIX/LINUX C/C++ 2010-12-29 02:54 11954人阅读 评论(1) 收藏 举报 语言func存储 有四种方式: 1.使用堆空 ...

  8. c#反射重载方法(发现不明确的匹配)

    GetMethod(string name) 在反射重载方法时,如果调用此重载方法,会产生 发现不明确的匹配 的错误. 解决方案如下: GetMethod("MethodName" ...

  9. Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)

    Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...

随机推荐

  1. C++Primer第五版——习题答案详解(三)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第4章 表达式 练习4.10 while(cin>>i&&i ...

  2. mysqldump备份与恢复笔记

    mysql> show databases; +--------------------+ | Database           | +--------------------+ | inf ...

  3. 第二章 Java内存区域与内存溢出异常

    运行时数据区域: 程序计数器(Program Counter Register):当前线程执行码行号指示器,属于线程私有内存.字节码解释器工作时就是通过调整这个计数器的值来选取下一条需要执行字节码指令 ...

  4. 分布式计算课程补充笔记 part 1.5

    ▶ 编写 SLURM 脚本 #!/bin/bash #SBATCH -J name # 任务名 #SBATCH -p gpu # 分区名,可为 cpu 或 gpu #SBATCH -N # 节点数 # ...

  5. Python第2天

    今天学习的主要内容: pycharm专业版的安装和注册,采用注册码的方式注册. 运算符,+ — * / // % < > <=  >= != <> . 基本数据类型 ...

  6. 转载:oracle 启动过程--oracle深入研究

    Oracle数据库的启动-nomount状态深入解析 通常所说的Oracle Server主要由两个部分组成:Instance和Database.Instance是指一组后台进程(在Windows上是 ...

  7. HTML5-网页添加视频-菜鸟笔记

    一.标签 <video> 在html5中,有这么个标签 <video> 标签. <video> 允许你简单的嵌入一段视频. 二.浏览器的兼容性问题 WebM 容器通 ...

  8. Hibernate 再接触 悲观锁和乐观锁

    为什么取1248 二进制 CRUD 移位效率高 在并发和效率选择一个平衡点 一般不会考虑幻读 因为我们不会再一个事务里查询两次,(只能设置为seralizable) 悲观锁和乐观锁的前提是read-u ...

  9. <Dare To Dream 团队>第一次作业:团队亮相

    队名:Dare To Dream 2.团队成员组成:学号/姓名(标记团队组长): 201571030333/绽玉林(组长) 201571030132/姚慧霞 201571030308/李金平    2 ...

  10. ArcGIS自定义工具箱-列举损坏的数据源

    ArcGIS自定义工具箱-列举损坏的数据源 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:查找地图文档中损坏的数据源链接 使用方法:参数可选,默认为当前(ar ...