redis與spring整合使用的步驟實例教程
前言
做過大型軟件系統(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相關知識,公司項目也用到了spring,下面這篇文章主要給大家介紹了一次Spring無法啟動的問題排查實戰(zhàn)之字節(jié)碼篇的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2022-04-04Java后端產(chǎn)生驗證碼后臺驗證功能的實現(xiàn)代碼
這篇文章主要介紹了Java后臺產(chǎn)生驗證碼后臺驗證功能,本文文字結合實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06Java Redis Template批量查詢指定鍵值對的實現(xiàn)
本文主要介紹了Java Redis Template批量查詢指定鍵值對的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07- 這篇文章主要介紹了Java中的?HTTP?協(xié)議原理詳解,HTTP超文本傳輸協(xié)議,下文簡稱?HTTP,它的作用是用于實現(xiàn)服務器端和客戶端的數(shù)據(jù)傳輸?shù)?/div> 2022-07-07
Java面試題沖刺第十三天--數(shù)據(jù)庫(3)
這篇文章主要為大家分享了最有價值的三道數(shù)據(jù)庫面試題,涵蓋內容全面,包括數(shù)據(jù)結構和算法相關的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下2021-07-07最新評論