1. 程式人生 > 資料庫 >在ssm專案中使用redis快取查詢資料的方法

在ssm專案中使用redis快取查詢資料的方法

在專案中常常需要後臺程式的持久層查詢資料庫來獲取資料,然後將資料交給服務層、控制層,最後才交給檢視層。如果資料訪問緩慢,就會影響程式的執行。

為了加快程式的執行,可以將資料放入快取中,包括資料快取和頁面快取。

所謂快取,就是將程式或系統經常要呼叫的物件存在記憶體中,一遍其使用時可以快速呼叫,不必再去建立新的重複的例項。這樣做可以減少系統開銷,提高系統效率。

其中頁面快取主要是oscache,可以整頁或者指定網頁某一部分快取,同時指定他的過期時間,這樣在此時間段裡面訪問的資料都是一樣的 。

資料快取則比較多,有著名的ehcache,redis,memcached等。

本文主要簡單的使用Java程式碼進行redis快取,即在查詢的時候先在service層從redis快取中獲取資料。如果不存在,則再經過dao層從資料庫中獲取,最後將查詢到的資料快取到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客戶端單機版 --> 
<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呼叫 
//service層查詢時程式碼 
@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(); 
 } 
 //使用持久層查詢資料庫 
 List<User> list = userMapper.list(); 
 try { 
 jedisClient.hset("user","list",JsonUtils.objectToJson(list)); 
 } catch (Exception e) { 
 e.printStackTrace(); 
 } 
 return list; 
} 

總結

以上所述是小編給大家介紹的在ssm專案中使用redis快取查詢資料,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!