Jedis 最简单的例子分析
来源:互联网 发布:sql server哪本书好 编辑:程序博客网 时间:2024/06/06 07:05
作为redis在工作中实际的使用者,我打算深入学习下redis,但是因为redis是用c写的,本人是个java程序员,所以打算先从分析jedis入手 逐步深入了解redis的使用等
Jedis 是java语言封装的 用来操作redis的第三方库
地址是:https://github.com/xetorthio/jedis
后面的分析都是基于 jedis 2.7.2 分析的
首先 如果我们要在maven项目中使用 jedis需要配置如下
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.2</version></dependency>
其次 我们看一下 jedis作为客户端操作redis的最简单的例子
Jedis jedis = new Jedis("127.0.0.1"); jedis.set("key", "value"); String value = jedis.get("key"); System.out.println(value);
1. 我们需要构建Jedis实例,构造函数可以只写 ip地址, 端口则使用默认值端口6379,超时时间默认使用2000ms
注意此时我们的程序并没有和redis-server建立连接通道
2.执行 jedis.set(key,value) 方法,执行步骤如下:
a.通过方法(isInMulti())检查当前是否为多命令模式,如果当前是在多命令模式下则抛出异常
"Cannot use Jedis when in Multi. Please use JedisTransaction instead."b.如果上面的检查通过,则调用client.set(final String key,final String value) 方法,其中client是 BinaryClient的子类
在 set方法中 会首先调用SafeEncoder类的encode方法对 传入的 key和string进行编码,编码的方式很简单 就是 将字符串转换为字节,其中转换的字符编码为 "utf-8"
然后会调用Connection的sendCommand 方法进行操作,在这个方法里面 才会真正开始调用Connection类的connect()方法,根据之前的host和port 对redis-server进行连接
紧接着会进入Protocol类的sendCommand方法,在这个方法里面会根据redis的协议格式 将相关的命令和内容通过RedisOutputStream写给redis-server ,关于redis通讯的协议部分以后会专门写个文章进行整理
在命令写入成功之后,会将Connection的piplinedCommands 属性自增一,表示在管道中已经有一个命令了
最后 会在set方法中调用 client.getStatusCodeReply 方法,该方法的作用是执行 RedisOutputStream 的 flush 方法,将 通道缓冲区中命令发送给redis-server,然后会将 piplinedCommands 自减一,表示已经有一个命令发送给 redis-server了,紧接着 Protocol类会根据协议从 inputstream中获取相关的返回值信息,如果信息不为空,则通过 SafeEncoder 类对字节数组编码为string后返回给调用放,这个返回的信息就是命令执行的成功还是失败等。
3 执行 jedis.get(key) 方法,
该方法基本与上面个的方法执行步骤一致,只是最后在获取服务器返回值的时候,上面的方面是 调用 client.getStatusCodeReply() 获取执行命令的返回结果
而对于 jedis.get()这种需要服务器返回具体信息的命令,是调用 client.getBulkReply()方法 获取返回的信息
这是我第一次写博客 ,作为我的学习笔记, 后面我会尽量每天记录一点学习redis获得的心得,欢迎大家拍砖,指出我对于jedis源码理解的错误,谢谢
- Jedis 最简单的例子分析
- Redis jedis 简单例子
- Jedis几个简单测试例子
- Jedis几个简单测试例子
- Jedis——最简单的操作数据库方式
- 最简单的ajax例子
- 最简单的FIT例子
- 最简单的d3d例子
- 最简单的Ajax例子
- 最简单的rmi例子
- 最简单的ajax例子
- 最简单的DWR例子
- 最简单Ninject的例子
- vue最简单的例子
- Jedis的简单使用
- Jedis的简单使用
- Jedis操作redis的例子
- struts简单例子的分析
- Hibernate HelloWorld-14 批量操作
- 堆排序
- java面向对象编程
- LeetCode 27:Remove Element
- OC第五天-字典,集合,数组排序
- Jedis 最简单的例子分析
- java 模版方法模式
- hdu1115 Lifting the Stone(几何,求多边形重心模板题)
- springMVC json自动化
- 图的邻接表存储
- opengl 机器人手臂
- OC第四天-NSString,NSArray,NSNumber,数组遍历
- Spring MVC之@RequestBody, @ResponseBody 详解
- LeetCode 28:Implement strStr()