欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

redis與spring整合使用的步驟實(shí)例教程

 更新時(shí)間:2018年03月12日 10:10:02   作者:俠客夜鶯  
這篇文章主要給大家介紹了關(guān)于redis與spring整合使用的相關(guān)資料,文中通過示例代碼將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

做過大型軟件系統(tǒng)的同學(xué)都知道,隨著系統(tǒng)數(shù)據(jù)越來越龐大,越來越復(fù)雜,隨之帶來的問題就是系統(tǒng)性能越來越差,尤其是頻繁操作數(shù)據(jù)庫帶來的性能損耗更為嚴(yán)重。很多業(yè)績大牛為此提出了眾多的解決方案和開發(fā)了很多框架以優(yōu)化這種頻繁操作數(shù)據(jù)庫所帶來的性能損耗,其中,尤為突出的兩個(gè)緩存服務(wù)器是Memcached和Redis。今天,我們不講Memcached和Redis本身,這里主要為大家介紹Spring與Redis整合使用的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細(xì)的介紹吧。

方法如下

第一步,在項(xiàng)目中加入redis的pom代碼:

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

第二步,spring中加載redis配置文件:applicationContext-redis.xml,內(nèi)容如下

<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
 <property name="maxTotal" value="${redis.maxTotal}" />
</bean>
 
 <bean class="redis.clients.jedis.ShardedJedisPool">
 <constructor-arg index="0" ref="poolConfig" />
 <constructor-arg index="1">
  <list>
  <bean class="redis.clients.jedis.JedisShardInfo">
   <constructor-arg index="0" value="${redis.node1.host}" />
   <constructor-arg index="1" value="${redis.node1.port}" />
  </bean>
  </list>
 </constructor-arg>
 </bean>
</beans>

第三步,編寫連接redis服務(wù)端的屬性文件:redis.properties

redis.maxTotal=100
redis.node1.host=127.0.0.1
redis.node1.port=6379

第四步,編寫redis的相關(guān)操作方法類,F(xiàn)unction類和RedisService類:

Funcrion類:

package xx.service;
/**
 * 為了抽取相同的操作代碼
 * @author yeying
 *<p>Description:</p>
 *<p>Company:</p>
 * @date:2017年12月5日 下午9:02:44
 */
public interface Function<T,E> {
 public T callback(E e);
}

RedisService類:

package com.taotao.common.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;

/**
 * redis的相關(guān)操作
 * @author yeying
 *<p>Description:</p>
 *<p>Company:</p>
 * @date:2017年12月3日 下午2:11:47
 */
@Service
public class RedisService {

 @Autowired(required=false) //需要再注入進(jìn)去
 private ShardedJedisPool shardedJedisPool;

 private <T> T execute(Function<T, ShardedJedis> fun){
 ShardedJedis shardedJedis = null;
 try {
  // 從連接池中獲取到j(luò)edis分片對(duì)象
  shardedJedis = shardedJedisPool.getResource();
  // 從redis中獲取數(shù)據(jù)
  return fun.callback(shardedJedis);
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  if (null != shardedJedis) {
  // 關(guān)閉,檢測(cè)連接是否有效,有效則放回到連接池中,無效則重置狀態(tài)
  shardedJedis.close();
  }
 }
 return null;
 }

 /**
 * 執(zhí)行set操作
 * @param key
 * @param value
 * @return
 */
 public String set(final String key,final String value){
 return this.execute(new Function<String, ShardedJedis>() {
  @Override
  public String callback(ShardedJedis e) {
  return e.set(key, value);
  }
 });
 }

 /**
 * 執(zhí)行set操作,并設(shè)置生存時(shí)間,單位為秒
 * @param key
 * @param value
 * @param seconds
 * @return
 */
 public String set(final String key,final String value,final Integer seconds){
 return this.execute(new Function<String, ShardedJedis>() {
  @Override
  public String callback(ShardedJedis e) {
  String str =e.set(key, value);
  e.expire(key, seconds);
  return str;
  }
 });
 }

 /**
 * 執(zhí)行g(shù)et操作
 * @param key
 * @return
 */
 public String get(final String key){
 return this.execute(new Function<String, ShardedJedis>() {
  @Override
  public String callback(ShardedJedis e) {
  return e.get(key);
  }
 });
 }

 /**
 * 執(zhí)行set操作
 * @param key
 * @return
 */
 public Long del(final String key){
 return this.execute(new Function<Long, ShardedJedis>() {
  @Override
  public Long callback(ShardedJedis e) {
  return e.del(key);
  }
 });
 }

 /**
 * 設(shè)置生存時(shí)間,單位為秒
 * @param key
 * @param seconds
 * @return
 */
 public Long expire(final String key, final Integer seconds) {
 return this.execute(new Function<Long, ShardedJedis>() {
  @Override
  public Long callback(ShardedJedis e) {
  return e.expire(key, seconds);
  }
 });
 }
}

第五步,啟動(dòng)redis服務(wù),redis-server.exe,雙擊打開:

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 一次Spring無法啟動(dòng)的問題排查實(shí)戰(zhàn)之字節(jié)碼篇

    一次Spring無法啟動(dòng)的問題排查實(shí)戰(zhàn)之字節(jié)碼篇

    最近學(xué)習(xí)了spring相關(guān)知識(shí),公司項(xiàng)目也用到了spring,下面這篇文章主要給大家介紹了一次Spring無法啟動(dòng)的問題排查實(shí)戰(zhàn)之字節(jié)碼篇的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Eclipse中如何引入JUnit進(jìn)行單元測(cè)試

    Eclipse中如何引入JUnit進(jìn)行單元測(cè)試

    這篇文章主要介紹了Eclipse中如何引入JUnit進(jìn)行單元測(cè)試問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • JVM虛擬機(jī)的類加載機(jī)制詳解

    JVM虛擬機(jī)的類加載機(jī)制詳解

    這篇文章主要介紹了JVM虛擬機(jī)的類加載機(jī)制詳解,類是在運(yùn)行期間第一次使用時(shí)動(dòng)態(tài)加載的,而不是一次性加載所有類,因?yàn)槿绻淮涡约虞d,那么會(huì)占用很多的內(nèi)存,需要的朋友可以參考下
    2023-12-12
  • Java后端產(chǎn)生驗(yàn)證碼后臺(tái)驗(yàn)證功能的實(shí)現(xiàn)代碼

    Java后端產(chǎn)生驗(yàn)證碼后臺(tái)驗(yàn)證功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java后臺(tái)產(chǎn)生驗(yàn)證碼后臺(tái)驗(yàn)證功能,本文文字結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Java Redis Template批量查詢指定鍵值對(duì)的實(shí)現(xiàn)

    Java Redis Template批量查詢指定鍵值對(duì)的實(shí)現(xiàn)

    本文主要介紹了Java Redis Template批量查詢指定鍵值對(duì)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java中Properties配置類用法詳解

    Java中Properties配置類用法詳解

    所謂的配置文件問題,是指我們?cè)陂_發(fā)時(shí),經(jīng)常需要讀取和修改一些配置信息,比如數(shù)據(jù)庫、消息隊(duì)列、Nginx、Web服務(wù)器等的配置,為了便于修改這些信息,我們可以采用Properties配置類,本文給大家講一下Properties配置類是怎么回事,以及怎么使用
    2023-06-06
  • Java中的?HTTP?協(xié)議原理詳解

    Java中的?HTTP?協(xié)議原理詳解

    這篇文章主要介紹了Java中的?HTTP?協(xié)議原理詳解,HTTP超文本傳輸協(xié)議,下文簡稱?HTTP,它的作用是用于實(shí)現(xiàn)服務(wù)器端和客戶端的數(shù)據(jù)傳輸?shù)?/div> 2022-07-07
  • Java實(shí)現(xiàn)的斷點(diǎn)續(xù)傳功能的示例代碼

    Java實(shí)現(xiàn)的斷點(diǎn)續(xù)傳功能的示例代碼

    本篇文章主要介紹了Java實(shí)現(xiàn)的斷點(diǎn)續(xù)傳功能的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java面試題沖刺第十三天--數(shù)據(jù)庫(3)

    Java面試題沖刺第十三天--數(shù)據(jù)庫(3)

    這篇文章主要為大家分享了最有價(jià)值的三道數(shù)據(jù)庫面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Mybatis核心配置文件加載流程詳解

    Mybatis核心配置文件加載流程詳解

    本文將介紹MyBatis在配置文件加載的過程中,如何加載核心配置文件、如何解析映射文件中的SQL語句以及每條SQL語句如何與映射接口的方法進(jìn)行關(guān)聯(lián),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12

最新評(píng)論