jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【red

jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【red

ID:34102558

大小:56.98 KB

页数:4页

时间:2019-03-03

jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【red_第1页
jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【red_第2页
jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【red_第3页
jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【red_第4页
资源描述:

《jedis使用总结【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【red》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Jedis使用总结作者:Teaev微博:http://weibo.com/teaev前段时间细节的了解了Jedis的使用,Jedis是redis的java版本的客户端实现。本文做个总结,主要分享如下内容:[pipeline]【分布式的id生成器】【分布式锁【watch][multi]][redis分布式】好了,一个一个来。一、Pipeline官方的说明是:startsapipeline,whichisaveryefficientwaytosendlotsofcommandandreadalltheresponseswhenyoufinishsendingtherrio简单

2、点说pipeline适用于批处理。当有大量的操作需要一次性执行的时候,可以用管道。示例:Jedisjedis=newJedis(String,int);Pipelinep=jedis.pipelined();p.set(key,value);//每个操作都发送请求给redis-serverp.get(key,value);p.sync();//这段代码获取所有的response这里我进行了20w次连续操作(10w读,10w写),不用pipeline耗时:187242ms,用pipeline耗时:1188ms,可见使用管道后的性能上了一个台阶。看了代码了解到,管道通过一次性

3、写入请求,然后一次性读取响应。也就是说jedis是:requestresponse,requestresponse,...;pipeline则是:requestrequest...responseresponseWzfx'io这样无需每次请求都等待server端的响应。二、跨jvm的id生成器谈到这个话题,首先要知道redis-server端是单线程来处理client端的请求的。这样来实现一个id生成器就非常简单了,只要简单的调用jdeis.incr(key);就搞定了。你或许会问,incr是原子操作吗,能保证不会出现并发问题吗,不是说了吗,server端是单线程处理请求

4、的。三、【跨jvm的锁实现【watch][multi]]首先说下这个问题的使用场景,有些时候我们业务逻辑是在不同的jvm进程甚至是不同的物理机上的jvm处理的。这样如何來实现不同jvm±的同步问题呢,其实我们可以慕于redis来实现一个锁。具体事务和监听请参考文章:redis学习笔记之事务暂时找到三种实现方式:1.通jedis.setnx(key,value)实现importjava.util.Random;importorg.apache.commons.pool.impl.GenericObjectPool.Config;importredis.dients.jedi

5、s.Jedis;importredis.clients.jedis.JedisPool;importredis.dients.jedis.Transaction;*@authorTeaey*/publicclassRedisLock{〃加锁标志publicstaticfinalStringLOCKED=”TRUE”;publicstaticfinallongONE_MILLI_NANOS=1000000L;〃默认超时时间(毫秒)publicstaticfinallongDEFAULT_TIME_OUT=3000;publicstaticJedisPoolpool;publ

6、icstaticfinalRandomr=newRandom();〃锁的超时时间(秒),过期删除publicstaticfinalintEXPIRE=5*60;static{pool=newJedisPool(newConfig(),"host蔦6379);}privateJedisjedis;privateStringkey;〃锁状态标志privatebooleanlocked=false;publicRedisLock(Stringkey){this.key=key;this.jedis=pool.getResource();}publicbooleanlock(lo

7、ngtimeout){longnano=System.nanoTime();timeout*=ONE_MILLI_NANOS;try{while((System.nanoTime()-nano)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。