日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java web redis_java web redis使用(二)

發布時間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java web redis_java web redis使用(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上篇中已經安裝好redis,然后下面就說怎么在java web中用客戶端來使用regis

使用jedis java客戶端

一:一個簡單的示例代碼:

public??static??void?main(String[]?args)?{

Jedis?jedis?=?new?Jedis(?"147.151.240.234"?,?6379?);

jedis.set("foo"?,?"bar"?);

String?value?=?jedis.get("foo"?);

System.out.println(value);

}

二:spring中配置:

首先,在項目中引入jeids的jar包。

Xml代碼???

?redis.clients??groupId?>

?jedis??artifactId?>

?2.0.0??version?>

?dependency?>

其次,在spring配置文件中添加配置(也可以直接new出這些對象,一樣的)

Xml代碼??

最后,調用的時候

Java代碼???

ShardedJedis?jedis?=??shardedJedisPool.getResource();

jedis.get(key);?//從redis服務器獲取值

jedis.set(key,?value);?//將值保存到redis服務器

jedis pool的問題

在使用jedis pool時遇到了這個問題:It seems like server has closed the connection

原因分析:

1.redis server 關閉了此客戶端的連接:server端設置了maxidletime(默認是5分鐘),服務端會不斷循環檢測clinet的最后一次通信時間(lastinteraction),如果大于maxidletime,則關閉連接,并回收相關資源。client在向該連接中寫數據后就會由于server端已經關閉而出現 broken pipe的問題。

2.pool的設置錯誤:

Xml代碼??

;!--?jedis?shard信息配置?-->

factory-method="getResource"?/>

上面的這種配法在spring初始化時獲取一次實例化jedisCommands,而后每次的redis的調用時并未從pool中獲取

解決方案:

設置

Xml代碼??

最近初次嘗試使用redis,java客戶端采用的jedis,寫了幾個簡單的類滿足基本的服務器配置,以及客戶端對象的使用等。

客戶端對象的創建

package?jediscache.common;

import?redis.clients.jedis.Jedis;

import?redis.clients.jedis.JedisPool;

import?redis.clients.jedis.JedisPoolConfig;

import?redis.clients.jedis.Protocol;

public??class?JedisFactory?{

private?JedisPoolConfig?jedisPoolConfig;

private?JedisPool?jedisPool;

public?JedisFactory(JedisPoolConfig?jedisPoolConfig)?{

super?();

this?.jedisPoolConfig?=?jedisPoolConfig;

}

public?Jedis?getJedisInstance(String?host)?{

return?getJedisPool(host,?Protocol.DEFAULT_PORT).getResource();

}

public?Jedis?getJedisInstance(String?host,?int?port)?{

return?getJedisPool(host,?port).getResource();

}

public?JedisPool?getJedisPool(String?host)?{

return?getJedisPool(host,?Protocol.DEFAULT_PORT);

}

public?JedisPool?getJedisPool(String?host,?int?port)?{

if?(jedisPool?==?null?)?{

jedisPool?=?new?JedisPool(jedisPoolConfig,?host,?port);

}

return?jedisPool;

}

/**

*?配合使用getJedisInstance方法后將jedis對象釋放回連接池中

*

*?@param?jedis?使用完畢的Jedis對象

*?@return?true?釋放成功;否則返回false

*/

public??boolean?release(Jedis?jedis)?{

if?(jedisPool?!=?null?&&?jedis?!=?null?)?{

jedisPool.returnResource(jedis);

return??true?;

}

return??false?;

}

}

使用客戶端對象

public??void?testLpush()?{

JedisFactory?factory?=?new?JedisFactory(?new?JedisPoolConfig());

Jedis?jedis?=?factory.getJedisInstance("localhost"?);

try?{

String?word?=?"word"?;

jedis.lpush(word,?"first"?);

jedis.lpush(word,?"second"?);

jedis.lpush(word,?"three"?);

System.out.println("word?:?"?+?jedis.lrange(word,?0?,?-?1?));

}?finally?{

factory.release(jedis);

}

}

總結

以上是生活随笔為你收集整理的java web redis_java web redis使用(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。