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

redis與spring整合使用的步驟實例教程

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

前言

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

方法如下

第一步,在項目中加入redis的pom代碼:

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

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

<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服務端的屬性文件:redis.properties

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

第四步,編寫redis的相關操作方法類,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的相關操作
 * @author yeying
 *<p>Description:</p>
 *<p>Company:</p>
 * @date:2017年12月3日 下午2:11:47
 */
@Service
public class RedisService {

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

 private <T> T execute(Function<T, ShardedJedis> fun){
 ShardedJedis shardedJedis = null;
 try {
  // 從連接池中獲取到jedis分片對象
  shardedJedis = shardedJedisPool.getResource();
  // 從redis中獲取數(shù)據(jù)
  return fun.callback(shardedJedis);
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  if (null != shardedJedis) {
  // 關閉,檢測連接是否有效,有效則放回到連接池中,無效則重置狀態(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操作,并設置生存時間,單位為秒
 * @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í)行get操作
 * @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);
  }
 });
 }

 /**
 * 設置生存時間,單位為秒
 * @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);
  }
 });
 }
}

第五步,啟動redis服務,redis-server.exe,雙擊打開:

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

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

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

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

    Eclipse中如何引入JUnit進行單元測試

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

    JVM虛擬機的類加載機制詳解

    這篇文章主要介紹了JVM虛擬機的類加載機制詳解,類是在運行期間第一次使用時動態(tài)加載的,而不是一次性加載所有類,因為如果一次性加載,那么會占用很多的內存,需要的朋友可以參考下
    2023-12-12
  • Java后端產(chǎn)生驗證碼后臺驗證功能的實現(xiàn)代碼

    Java后端產(chǎn)生驗證碼后臺驗證功能的實現(xiàn)代碼

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

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

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

    Java中Properties配置類用法詳解

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

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

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

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

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

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

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

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

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

最新評論