在ssm項(xiàng)目中使用redis緩存查詢數(shù)據(jù)的方法
在項(xiàng)目中常常需要后臺程序的持久層查詢數(shù)據(jù)庫來獲取數(shù)據(jù),然后將數(shù)據(jù)交給服務(wù)層、控制層,最后才交給視圖層。如果數(shù)據(jù)訪問緩慢,就會影響程序的運(yùn)行。
為了加快程序的運(yùn)行,可以將數(shù)據(jù)放入緩存中,包括數(shù)據(jù)緩存和頁面緩存。
所謂緩存,就是將程序或系統(tǒng)經(jīng)常要調(diào)用的對象存在內(nèi)存中,一遍其使用時(shí)可以快速調(diào)用,不必再去創(chuàng)建新的重復(fù)的實(shí)例。這樣做可以減少系統(tǒng)開銷,提高系統(tǒng)效率。
其中頁面緩存主要是oscache,可以整頁或者指定網(wǎng)頁某一部分緩存,同時(shí)指定他的過期時(shí)間,這樣在此時(shí)間段里面訪問的數(shù)據(jù)都是一樣的 。
數(shù)據(jù)緩存則比較多,有著名的ehcache,redis,memcached等。
本文主要簡單的使用Java代碼進(jìn)行redis緩存,即在查詢的時(shí)候先在service層從redis緩存中獲取數(shù)據(jù)。如果不存在,則再經(jīng)過dao層從數(shù)據(jù)庫中獲取,最后將查詢到的數(shù)據(jù)緩存到redis中;如果存在,直接從redis緩存中讀取,并交給controller層。
xml配置:
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="${redis.maxTotal}"></property>
<property name="maxIdle" value="${redis.maxIdle}"></property>
<property name="testOnBorrow" value="${redis.testOnBorrow}"></property>
<property name="maxWaitMillis" value="${redis.maxWaitMillis}"></property>
</bean>
<!-- jedis客戶端單機(jī)版 -->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="poolConfig" ref="poolConfig"></constructor-arg>
<constructor-arg name="host" value="${redis.hostName}"></constructor-arg>
<constructor-arg name="port" value="${redis.port}"></constructor-arg>
</bean>
<!-- jedis集群版配置 -->
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="poolConfig" ref="poolConfig"></constructor-arg>
<constructor-arg name="nodes">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
<constructor-arg name="port" value="7001"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
<constructor-arg name="port" value="7002"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
<constructor-arg name="port" value="7003"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
<constructor-arg name="port" value="7004"></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="127.0.0.1"></constructor-arg>
<constructor-arg name="port" value="7005"></constructor-arg>
</bean>
</set>
</constructor-arg>
</bean>
[java] view plain copy
java調(diào)用
//service層查詢時(shí)代碼
@Autowired
private JedisClient jedisClient;
@Override
public List<User> list() {
// TODO Auto-generated method stub
try {
String json = jedisClient.hget("user", "list");
if (StringUtils.isNotBlank(json)) {
List<User> users = JsonUtils.jsonToList(json, User.class);
return users;
}
} catch (Exception e) {
e.printStackTrace();
}
//使用持久層查詢數(shù)據(jù)庫
List<User> list = userMapper.list();
try {
jedisClient.hset("user", "list", JsonUtils.objectToJson(list));
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
總結(jié)
以上所述是小編給大家介紹的在ssm項(xiàng)目中使用redis緩存查詢數(shù)據(jù),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Redis的Python客戶端redis-py安裝使用說明文檔
這篇文章主要介紹了Redis的Python客戶端redis-py安裝使用說明文檔,本文講解了安裝方法、入門使用實(shí)例、API參考和詳細(xì)說明,需要的朋友可以參考下2015-06-06
深入了解Redis連接數(shù)問題的現(xiàn)象和解法
一般情況?Redis?連接數(shù)問題并不常見,但是當(dāng)你業(yè)務(wù)服務(wù)增加、對?Redis?的依賴持續(xù)增強(qiáng)的過程中,可能會遇到很多?Redis?的問題,這個(gè)時(shí)候,Redis?連接數(shù)可能就成了一個(gè)常見的問題,在本章節(jié),希望能夠帶大家了解Redis連接數(shù)問題的現(xiàn)象和解法,需要的朋友可以參考下2023-12-12
Redis KEYS查詢大批量數(shù)據(jù)替代方案
在使用 Redis 時(shí),KEYS 命令雖然簡單直接,但其全表掃描的特性在處理大規(guī)模數(shù)據(jù)時(shí)會導(dǎo)致性能問題,甚至可能阻塞 Redis 服務(wù),本文將介紹SCAN命令、有序集合、哈希表和RediSearch模塊四種替代 KEYS 的高效方案,需要的朋友可以參考下2024-12-12
如何監(jiān)聽Redis中Key值的變化(SpringBoot整合)
測試過程中我們有一部分常量值放入redis,共大部分應(yīng)用調(diào)用,但在測試過程中經(jīng)常有人會清空redis,回歸測試,下面這篇文章主要給大家介紹了關(guān)于如何監(jiān)聽Redis中Key值變化的相關(guān)資料,需要的朋友可以參考下2024-03-03
使用Redis有序集合實(shí)現(xiàn)IP歸屬地查詢詳解
這篇文章主要介紹了使用Redis有序集合實(shí)現(xiàn)IP歸屬地查詢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

