没有合适的资源?快使用搜索试试~ 我知道了~
Jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】.doc...
4星 · 超过85%的资源 需积分: 12 29 下载量 91 浏览量
2012-07-17
18:28:57
上传
评论
收藏 23KB DOCX 举报
温馨提示
试读
4页
Jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】.docx
资源推荐
资源详情
资源评论
Jedis 使用总结
作者: Teaey
微博:hp://weibo.com/teaey
前段时间细节的了解了 Jedis 的使用,Jedis 是 redis 的 java 版本的客户端实现。
本文做个总结,主要分享如下内容:
【pipeline】【分布式的 id 生成器】【分布式锁【watch】【multi】】【redis 分布式】
好了,一个一个来。
一、 Pipeline
官方的说明是:starts a pipeline,which is a very ecient way to send lots of
command and read all the responses when you nish sending them。简单点说
pipeline 适用于批处理。当有大量的操作需要一次性执行的时候,可以用管道。
示例:
Jedisjedis=newJedis(String,int);
Pipelinep=jedis.pipelined();
p.set(key,value);//每个操作都发送请求给 redis-server
p.get(key,value);
p.sync();//这段代码获取所有的 response
这里我进行了 20w 次连续操作(10w 读,10w 写),不用 pipeline 耗时:187242ms,用
pipeline 耗时:1188ms,可见使用管道后的性能上了一个台阶。看了代码了解到,管道通过
一次性写入请求,然后一次性读取响应。也就是说 jedis 是:request response,request
response,...;pipeline 则是:request request... response response 的方式。这样无
需每次请求都等待 server 端的响应。
二、 跨 jvm 的 id 生成器
谈到这个话题,首先要知道 redis-server 端是单线程来处理 client 端的请求的。
这样来实现一个 id 生成器就非常简单了,只要简单的调用 jdeis.incr(key);就搞定了。
你或许会问,incr 是原子操作吗,能保证不会出现并发问题吗,不是说了吗,server 端是单线
程处理请求的。
三、 【跨 jvm 的锁实现【watch】【multi】】
首先说下这个问题的使用场景,有些时候我们业务逻辑是在不同的 jvm 进程甚至是不同的物理
机上的 jvm 处理的。这样如何来实现不同 jvm 上的同步问题呢,其实我们可以基于 redis 来实
现一个锁。
具体事务和监听请参考文章:redis 学习笔记之事务
暂时找到三种实现方式:
1. 通过 jedis.setnx(key,value)实现
importjava.util.Random;
importorg.apache.commons.pool.impl.GenericObjectPool.Cong;
资源评论
- AndersZhuo1232013-12-15总结的挺详细的
冲杯茶喝
- 粉丝: 14
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功