jedis操作redis的幾種常見方式_第1頁
jedis操作redis的幾種常見方式_第2頁
jedis操作redis的幾種常見方式_第3頁
jedis操作redis的幾種常見方式_第4頁
jedis操作redis的幾種常見方式_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

本文格式為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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論