在項目中常常需要后臺程序的持久層查詢數(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)存中,一遍其使用時可以快速調(diào)用,不必再去創(chuàng)建新的重復(fù)的實(shí)例。這樣做可以減少系統(tǒng)開銷,提高系統(tǒng)效率。
其中頁面緩存主要是oscache,可以整頁或者指定網(wǎng)頁某一部分緩存,同時指定他的過期時間,這樣在此時間段里面訪問的數(shù)據(jù)都是一樣的 。
數(shù)據(jù)緩存則比較多,有著名的ehcache,redis,memcached等。
本文主要簡單的使用Java代碼進(jìn)行redis緩存,即在查詢的時候先在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層查詢時代碼
@Autowired
private JedisClient jedisClient;
@Override
public ListUser> list() {
// TODO Auto-generated method stub
try {
String json = jedisClient.hget("user", "list");
if (StringUtils.isNotBlank(json)) {
ListUser> users = JsonUtils.jsonToList(json, User.class);
return users;
}
} catch (Exception e) {
e.printStackTrace();
}
//使用持久層查詢數(shù)據(jù)庫
ListUser> list = userMapper.list();
try {
jedisClient.hset("user", "list", JsonUtils.objectToJson(list));
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
總結(jié)
以上所述是小編給大家介紹的在ssm項目中使用redis緩存查詢數(shù)據(jù),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- SpringBoot集成SSM、Dubbo、Redis、JSP的案例小結(jié)及思路講解
- ssm開發(fā)使用redis作為緩存的使用步驟
- Redis集群與SSM整合使用方法
- redis與ssm整合方法(mybatis二級緩存)
- 關(guān)于idea中ssm框架的編碼問題分析
- 解決idea導(dǎo)入ssm項目啟動tomcat報錯404的問題
- IDEA SSM整合Redis項目實(shí)例 附源碼