日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java中Jedis基本使用

瀏覽:36日期:2022-08-12 10:30:52

在前面我們已經(jīng)學(xué)習(xí)了Redis命令行客戶端redis-cli的使用,接下來我們了解一下Redis基于Java編程語言的客戶端。

在Java語言體系下,有三個常用的Redis客戶端Jedis、Redisson、Lettuce。三者各有特點,各有適用的場景。

Java中Jedis基本使用

Jedis:Redis的Java實現(xiàn)的客戶端,其API提供了比較全面的Redis命令的支持; Jedis中的方法調(diào)用是比較底層的暴露的Redis的API,也即Jedis中的Java方法基本和Redis的API保持著一致,了解Redis的API,也就能熟練的使用Jedis。 Redisson:實現(xiàn)了分布式和可擴展的Java數(shù)據(jù)結(jié)構(gòu),提供很多分布式相關(guān)操作服務(wù),例如,分布式鎖,分布式集合,可通過Redis支持延遲隊列。和Jedis相比,功能較為簡單,不支持字符串操作,不支持排序、事務(wù)、管道、分區(qū)等Redis特性。Redisson的宗旨是促進使用者對Redis的關(guān)注分離,從而讓使用者能夠?qū)⒕Ω械胤旁谔幚順I(yè)務(wù)邏輯上。 Redisson中的方法則是進行比較高的抽象,每個方法調(diào)用可能進行了一個或多個Redis方法調(diào)用。 Lettuce:高級Redis客戶端,用于線程安全同步,異步和響應(yīng)使用,支持集群,Sentinel,管道和編碼器。是SpringBoot2.x版本默認的客戶端。

好了,我們開始學(xué)習(xí)Jedis的使用吧。

1、Jedis的基本使用

創(chuàng)建Maven工程,在項目中添加Jedis依賴。

<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.2</version></dependency>

Jedis的使用方法非常簡單,只要三行代碼就可以實現(xiàn)基本的set/get功能:

//1.生成一個Jedis對象,這個對象負責(zé)和指定Redis實例進行通信Jedis jedis = new Jedis('127.0.0.1', 6379);// 2.jedis執(zhí)行set操作jedis.set('hello', 'world');//3.jedis執(zhí)行g(shù)et操作,value='world'String value = jedis.get('hello');

初始化Jedis需要兩個參數(shù):Redis實例的IP和端口,除了這兩個參數(shù)外,還有一個包含了四個參數(shù)的構(gòu)造函數(shù)是比較常用的:

Jedis(final String host, final int port, final int connectionTimeout, final int soTimeout)

參數(shù)說明:

host:Redis實例的所在機器的IP port:Redis實例的端口 connectionTimeout:客戶端連接超時 soTimeout:客戶端讀寫超時

可以打印輸出一下上面程序的結(jié)果:

Java中Jedis基本使用

和JDBC類似,一般涉及到這種網(wǎng)絡(luò)I/O的操作,最好使用try catch finally的形式,稍微修改一下上面的例子:

Jedis jedis = null;try { jedis = new Jedis('127.0.0.1', 6379); jedis.get('hello');} catch (Exception e) { e.printStackTrace();} finally { if (jedis != null) {jedis.close(); }}

接下來我們看一下Jedis對各種基本數(shù)據(jù)類型的操作:

字符串

jedis.set('hello', 'world');//結(jié)果 worldSystem.out.println(jedis.get('hello')); //結(jié)果 1System.out.println(jedis.incr('counter'));

hash

jedis.hset('myhash', 'f1', 'v1');jedis.hset('myhash', 'f2', 'v2');//運行結(jié)果 {f2=v2, f1=v1}System.out.println(jedis.hgetAll('myhash'));

list

jedis.rpush('mylist', '1');jedis.rpush('mylist', '2');jedis.rpush('mylist', '3');//運行結(jié)果 [1, 2, 3]System.out.println(jedis.lrange('mylist',0,-1));

set

jedis.sadd('myset', 'a');jedis.sadd('myset', 'b');jedis.sadd('myset', 'a');//運行結(jié)果 [b, a]System.out.println(jedis.smembers('myset'));

zset

Jedis jedis = new Jedis('127.0.0.1', 6379);jedis.zadd('thezset', 99, 'tom');jedis.zadd('thezset', 66, 'peter');jedis.zadd('thezset', 33, 'james');//運行結(jié)果 james 33.0 peter 66.0 tom 99.0jedis.zrangeWithScores('thezset',0,-1).stream().forEach(s->{ System.out.print(s.getElement()+' '+s.getScore()+' ');});2、序列化

在Java中,存儲對象一般會進行序列化和反序列化,Jedis本身并不支持序列化。可以引入游戲額第三方的序列化工具,例如XML、Json、谷歌的Protobuf、Facebook的Thrift等等。

我們以protostuff(Protobuf的Java客戶端)為例來進行學(xué)習(xí):

引入protostuff依賴

<properties><protostuff.version>1.0.11</protostuff.version> </properties> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-runtime</artifactId> <version>${protostuff.version}</version></dependency><dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>${protostuff.version}</version></dependency>

定義實體類

public class Club implements Serializable { private int id; // id private String name; // 名稱 private String info; // 描述 private Date createDate; // 創(chuàng)建日期 private int rank; // 排名 //省略getter/setter等}

測試序列化和反序列化

// 1.生成序列化工具類ProtostuffSerializer protostuffSerializer = new ProtostuffSerializer();// 2.生成Jedis對象Jedis jedis = new Jedis('127.0.0.1', 6379);// 3.序列化String key = 'club:1';// 定義實體對象Club club = new Club(1, 'AC', '米蘭', new Date(), 1);// 序列化byte[] clubBtyes = protostuffSerializer.serialize(club);jedis.set(key.getBytes(), clubBtyes);// 4.反序列化byte[] resultBtyes = jedis.get(key.getBytes());Club resultClub = protostuffSerializer.deserialize(resultBtyes);//結(jié)果 Club{id=1, name=’AC’, info=’米蘭’, createDate=Sat May 15 22:21:42 CST 2021, rank=1}System.out.println(resultClub.toString());3、Jedis連接池

在上面我們使用的是Jedis的直連方式,每次都會新建TCP 連接,使用后再斷開連接。

這種頻繁的連接/斷開連接的過程顯然是對資源的一種浪費。

Java中Jedis基本使用

和數(shù)據(jù)庫連接池一樣,同樣可以引入池化技術(shù),將Jedis連接存在池子(JedisPool)里,每次去池子里取,而不用重新創(chuàng)建。

Java中Jedis基本使用

連接池的方式是可以預(yù)先初始化好Jedis連接,所以每次只需要從 Jedis連接池借用即可,而借用和歸還操作是在本地進行的,只有少量的并發(fā)同步開銷,遠遠小于新建TCP連接的開銷。

Jedis提供了JedisPool這個類作為對Jedis的連接池,同時使用了Apache的通用對象池工具common-pool作為資源的管理工具。

使用JedisPool操 作Redis示例如下:

1)Jedis連接池(通常JedisPool是單例的):

// common-pool連接池配置,這里使用默認配置GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();// 初始化Jedis連接池JedisPool jedisPool = new JedisPool(poolConfig, '127.0.0.1', 6379);

2)獲取Jedis對象不再是直接生成一個Jedis對象進行直連,而是從連接池直接獲取:

Jedis jedis = null;try { // 1. 從連接池獲取jedis對象 jedis = jedisPool.getResource(); // 2. 執(zhí)行操作 jedis.get('hello');} catch (Exception e) { e.printStackTrace();} finally { if (jedis != null) {// 如果使用JedisPool,close操作不是關(guān)閉連接,代表歸還連接池 jedis.close(); }}

面GenericObjectPoolConfig使用的是默認配置,實際它提供有很多參數(shù),例如池子中最大連接數(shù)、最大空閑連接數(shù)、最小空閑連接數(shù)、連接活性檢測,等等。

參考:

【1】:《Redis開發(fā)與運維》

【2】:redis幾種java客戶端比較

到此這篇關(guān)于Java中Jedis基本使用的文章就介紹到這了,更多相關(guān)Java Jedis使用內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品视频一区二区三区在线观看| 亚欧洲精品视频在线观看| 欧美天堂亚洲电影院在线观看| 亚洲一级少妇| 9国产精品视频| 欧美韩日一区| 国产精品高颜值在线观看| 中文在线免费视频| 成人精品视频| 日韩精品诱惑一区?区三区| 高清一区二区| 久久av资源| 国产精品一区二区三区av| 98精品视频| 你懂的亚洲视频| 97se综合| 久久国产免费| 自由日本语亚洲人高潮| 另类av一区二区| 亚洲九九精品| 激情综合自拍| 日韩美女精品| 欧美成人一二区| 国产一区欧美| 国产精品a久久久久| 另类综合日韩欧美亚洲| 久久免费大视频| 精品一区二区三区中文字幕| 蜜臀久久精品| 国产精品夜夜夜| 久久99蜜桃| 日韩免费福利视频| 日精品一区二区三区| 久久一区二区三区电影| 欧美日韩国产高清| 另类欧美日韩国产在线| 激情综合自拍| 蜜桃久久av一区| 视频一区免费在线观看| 久久精品高清| 日本欧美在线看| 日韩高清一区在线 | 国产欧美视频在线| 97精品97| 久色成人在线| 欧美激情综合| 日韩精品一区二区三区免费观看| 亚洲国内欧美| 天堂av在线| 国产精品一区高清| 欧美精品国产白浆久久久久| 日本国产欧美| 亚洲欧美日本视频在线观看| 日韩在线免费| 国产午夜一区| 一本一道久久a久久| 免费视频久久| 欧美日韩午夜电影网| 新版的欧美在线视频| 色爱av综合网| 亚洲深深色噜噜狠狠爱网站 | 亚洲v天堂v手机在线| av中文资源在线资源免费观看| 成人一区不卡| 美腿丝袜亚洲一区| 亚洲精品一二| 免费日韩一区二区| 91亚洲精品在看在线观看高清| 欧美亚洲自偷自偷| 红杏一区二区三区| 精品国产乱码久久久久久1区2匹| 好吊日精品视频| 久久精品观看| 视频一区二区不卡| 国产一区二区三区探花| 亚洲精选成人| 欧美日韩一区二区国产| 日韩一区精品| 日韩一区二区三区四区五区| 亚洲欧美不卡| 日本精品在线播放| 午夜精品亚洲| 国产日产精品一区二区三区四区的观看方式| 激情综合网址| 四虎国产精品免费久久| 精品国产欧美日韩一区二区三区| 综合国产在线| 国产传媒av在线| 视频一区二区三区中文字幕| 欧美片第1页综合| 国产成人免费视频网站视频社区| 欧美偷窥清纯综合图区| 丝袜诱惑一区二区| 久久久久久黄| 亚洲欧美高清| 亚欧洲精品视频在线观看| 日韩中文字幕亚洲一区二区va在线 | 亚洲午夜久久久久久尤物| 午夜久久影院| 亚洲欧美网站| 麻豆精品视频在线观看| 欧美极品一区二区三区| 9色精品在线| 日韩精品第一区| 亚洲伊人影院| 国产精品三级| 男人操女人的视频在线观看欧美| 欧美精品国产白浆久久久久| 欧美www视频在线观看| 另类激情亚洲| 精品免费视频| 日韩激情网站| 亚洲欧洲美洲国产香蕉| 日韩三区免费| 91亚洲国产| 欧美一级网站| 久久蜜桃精品| 精品网站999| 久久精品72免费观看| 蜜臀国产一区| 91精品国产经典在线观看| 在线成人直播| 国产精品蜜芽在线观看| 精品一区二区三区四区五区| 欧美在线综合| 国产精品高潮呻吟久久久久| 亚洲综合精品| 鲁大师成人一区二区三区| 成人精品久久| 国际精品欧美精品| 超碰超碰人人人人精品| 午夜精品亚洲| 亚州av乱码久久精品蜜桃| www在线观看黄色| 狠狠躁少妇一区二区三区| 国产精品一区二区三区美女 | 久久久久久久久久久妇女| 在线成人动漫av| 欧美成人综合| 99精品国产一区二区三区| 久久天堂影院| 免费观看日韩电影| 伊人网在线播放| 日韩成人午夜精品| 久久福利一区| 国产精品66| 麻豆久久一区| 在线成人直播| 亚洲欧美日韩在线观看a三区| 激情欧美丁香| 亚洲欧美日韩在线观看a三区 | 99日韩精品| 蜜桃av一区二区| 国产亚洲电影| 国产日韩一区二区三区在线 | 欧美日韩一视频区二区| 亚洲人妖在线| 婷婷综合一区| 国模精品一区| 日韩高清一区| 蜜桃一区二区三区在线| 中文字幕亚洲在线观看| 日韩一区中文| 日韩免费福利视频| 蜜臀久久99精品久久久久久9| 美女久久久精品| 欧美精品一区二区三区精品| 欧美一区二区三区激情视频| 久久av中文| 国产乱码精品一区二区三区四区| 欧美日一区二区| 成人啊v在线| 久久伦理在线| 亚洲aa在线| 欧美日韩一区二区国产| 欧美xxxx性| 精品少妇av| 亚洲女同中文字幕| 日韩一区精品字幕| 精品日本视频| 久久精品国产68国产精品亚洲| 国产精品夜夜夜| 成人在线超碰| 婷婷精品久久久久久久久久不卡| 国内揄拍国内精品久久| 丝袜诱惑制服诱惑色一区在线观看 | 国产高潮在线| 免费成人av在线播放| 高潮久久久久久久久久久久久久| 蜜臀久久久久久久| 国产精品黑丝在线播放| 国产亚洲精品美女久久| 中文字幕av一区二区三区四区| 美女精品一区二区| 蜜臀av一区二区三区| 亚洲一级特黄| 日韩欧美午夜| se01亚洲视频 | 亚洲韩日在线| 国产精品亚洲人成在99www|