




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本文格式為Word版,下載可任意編輯——jedis操作redis的幾種常見方式jedis操作redis的幾種常見方式
Redis是一個出名的key-value存儲系統,也是nosql中的最常見的一種,以下是我探尋整理的關于jedis操作redis的幾種常見方式,需要的摯友們一起看看吧!想了解更多相關信息請持續關注我們我!
前言
Redis是一個出名的key-value存儲系統,也是nosql中的最常見的一種。其實,個人認為,redis最強大的地方不在于其存儲,而在于其強大的緩存作用。
我們可以把它想象成一個巨大的多借點集群,聚合多借點的'內存的Map,也就是Key-Value。
所以,我們可以把它做成緩存組件。
官方推舉的Java版客戶端是jedis,分外強大和穩定,支持事務、管道及有jedis自身實現。我們對redis數據的操作,都可以通過jedis來完成。
那我們就來看一看,jedis不同的調用方式:
1普遍同步方式
這是一種最簡樸和最根基的調用方式,對于簡樸的數據存取需求,我們可以通過這種方式調用。
publicvoidjedisNormal
Jedisjedis=newJedislocalhost;
longstart=System.currentTimeMillis;
forinti=0;i100000;i++
Stringresult=jedis.setn+i,n+i;
longend=System.currentTimeMillis;
System.out.printlnSimpleSET:+end-start/1000.0+seconds;
jedis.disconnect;
//每次set之后都可以返回結果,標記是否告成。
2事務方式Transactions
所謂事務,即一個連續操作,是否執行是一個事務,要么完成,要么失敗,沒有中間狀態。
而redis的事務很簡樸,他主要目的是保障,一個client發起的事務中的命令可以連續的執行,而中間不會插入其他client的命令,也就是事務的連貫性。
publicvoidjedisTrans
Jedisjedis=newJedislocalhost;
longstart=System.currentTimeMillis;
Transactiontx=jedis.multi;
forinti=0;i100000;i++
tx.sett+i,t+i;
ListObjectresults=tx.exec;
longend=System.currentTimeMillis;
System.out.printlnTransactionSET:+end-start/1000.0+seconds;
jedis.disconnect;
//我們調用jedis.watch方法來監控key,假設調用后key值發生變化,那么整個事務會執行失敗。另外,事務中某個操作失敗,并不會回滾其他操作。這一點需要留神。還有,我們可以使用discard方法來取消事務。
3管道Pipelining
管道是一種兩個進程之間單向通信的機制。
那再redis中,為何要使用管道呢?有時候,我們需要采用異步的方式,一次發送多個指令,并且,不同步等待其返回結果。這樣可以取得分外好的執行效率。
publicvoidjedisPipelined
Jedisjedis=newJedislocalhost;
Pipelinepipeline=jedis.pipelined;
longstart=System.currentTimeMillis;
forinti=0;i100000;i++
pipeline.setp+i,p+i;
ListObjectresults=pipeline.syncAndReturnAll;
longend=System.currentTimeMillis;
System.out.printlnPipelinedSET:+end-start/1000.0+seconds;
jedis.disconnect;
4管道中調用事務
對于,事務以及管道,這兩個概念我們都領會了。
在某種需求下,我們需要異步執行命令,但是,又夢想多個命令是有連續的,所以,我們就采用管道加事務的調用方式。jedis是支持在管道中調用事務的。
publicvoidjedisCombPipelineTrans
jedis=newJedislocalhost;
longstart=System.currentTimeMillis;
Pipelinepipeline=jedis.pipelined;
pipeline.multi;
forinti=0;i100000;i++
pipeline.set+i,+i;
pipeline.exec;
ListObjectresults=pipeline.syncAndReturnAll;
longend=System.currentTimeMillis;
System.out.printlnPipelinedtransaction:+end-start/1000.0+seconds;
jedis.disconnect;
//效率上可能會有所欠缺
5分布式直連同步調用
這個是分布式直接連接,并且是同步調用,每步執行都返回執行結果。類似地,還有異步管道調用。
其實就是分片。
publicvoidjedisShardNormal
ListJedisShardInfoshards=Arrays.asList
newJedisShardInfolocalhost,6379,
newJedisShardInfolocalhost,6380;
ShardedJedissharding=newShardedJedisshards;
longstart=System.currentTimeMillis;
forinti=0;i100000;i++
Stringresult=sharding.setsn+i,n+i;
longend=System.currentTimeMillis;
System.out.printlnSimple@SharingSET:+end-start/1000.0+seconds;
sharding.disconnect;
6分布式直連異步調用
publicvoidjedisShardpipelined
ListJedisShardInfoshards=Arrays.asList
newJedisShardInfolocalhost,6379,
newJedisShardInfolocalhost,6380;
ShardedJedissharding=newShardedJedisshards;
ShardedJedisPipelinepipeline=sharding.pipelined;
longstart=System.currentTimeMillis;
forinti=0;i100000;i++
pipeline.setsp+i,p+i;
ListObjectresults=pipeline.syncAndReturnAll;
longend=System.currentTimeMillis;
System.out.printlnPipelined@SharingSET:+end-start/1000.0+seconds;
sharding.disconnect;
7分布式連接池同步調用
假設,你的分布式調用代碼是運行在線程中,那么上面兩個直連調用方式就不適合了,由于直連方式是非線程安好的,這個時候,你就務必選擇連接池調用。
連接池的調用方式,適合大規模的redis集群,并且多客戶端的操作。
publicvoidjedisShardSimplePool
ListJedisShardInfoshards=Arrays.asList
newJedisShardInfolocalhost,6379,
newJedisShardInfolocalhost,6380;
ShardedJedisPoolpool=newShardedJedisPoolnewJedisPoolConfig,shards;
ShardedJedisone=pool.getResource;
longstart=System.currentTimeMillis;
forinti=0;i100000;i++
Stringresult=one.setspn+i,n+i;
longend=System.currentTimeMillis;
pool.returnResourceone;
System.out.printlnSimple@PoolSET:+end-start/1000.0+seconds;
pool.destroy;
8分布式連接池異步調用
publicvoidjedisShardPipelinedPool
ListJedisShardInfoshards=Arrays.asList
newJedisShardInfolocalhost,6379,
newJedisShardInfolocalhost,6380;
ShardedJedisPoolpool=newShardedJedisPoolnewJedisPoolConfig,shards;
ShardedJedisone=pool.getResource;
ShardedJedisPipelinepipeline=one.pipelined;
longstart=System.currentTimeMillis;
forinti=0;i100000;i++
pipeline.setsppn+i,n+i;
ListObjectresults=pipeline.syncAndReturnAll;
longend=System.currentTimeMillis;
pool.returnResourceone;
System.out.printlnPipelined@PoolSET:+end-start/1000.0+seconds;
pool.destroy;
9需要留神的地方
事務和管道都是異步模式。在事務和管道中不能同步查詢結果。譬如下面兩個調用,都是不允許的:
Transactiontx=jedis.multi;
forinti=0;i100000;i++
tx.sett+i,t+i;
System.out.printlntx.gett1000.get;//不允許
ListObjectresults=tx.exec;
Pipelinepipeline=jedis.pipelined;
longstart=System.currentTimeMillis;
forinti=0;i100000;i++
pipeline.setp+i,p+i;
System.out.printlnpipeline.getp1000.get;//不允許
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版一年級上冊3 1~5的認識和加減法0的認識教學設計
- 人教版七年級數學下冊《11.1.1不等式及其解集》同步測試題(附答案)
- 2025年學生會工作心得體會(15篇)
- 高中語文教師履職總結范文(17篇)
- 體育部部長競選演講稿(13篇)
- 深圳珠寶培訓課件獲取途徑
- 實習生年終工作總結范文(15篇)
- 9《小水滴的訴說》 (教學設計)-部編版道德與法治二年級下冊
- 5 我愛我們班 第二課時 教學設計-2024-2025學年道德與法治二年級上冊統編版
- 《檔案法規基礎》課件
- 《跨境電子商務零售進口商品清單》
- 防汛抗旱知識培訓材料
- 輔警考試公安基礎知識考試試題庫及答案
- 政府投資項目審計服務采購服務方案和內部質量管理制度投標方案(技術方案)
- 《勞動創造幸福奮斗成就夢想》主題班會
- TWJQMA 010-2024 露地甜瓜改良式滴灌栽培技術
- 湖南省長沙市2024年中考英語真題(含答案)
- 《JISG4305-2016中文版冷軋不銹鋼板材、薄板和帶材》
- 8推翻帝制 民族覺醒 (第三課時)教學設計-五年級下冊道德與法治
- 幼兒園班本課程《手的秘密》
- 中小學違規征訂教輔材料問題專項整治實施方案
評論
0/150
提交評論