標籤:redis 緩衝
緩衝為什麼加在service層而不是controller層?
所有訪問資料庫的操作必須經過service層,如果資料在controllerA進行緩衝,當controllerB對資料庫進行增、刪、改操作後,controllerB無法知道controllerA如何緩衝的資料,因而無法將controllerA緩衝中的資料更新,此時controllerA儲存的就是髒資料。
如果把緩衝加在service層,因為所有訪問資料庫的操作都必須經過service層, 所以我們可以在service層進行攔截:如果是查詢資料,則根據規則把資料存放區到緩衝;如果是增、刪、改資料,則根據規則把緩衝中的資料清除。
如何保證緩衝中的資料是最新的? 如果是查詢操作,則用CacheAdd方法進行攔截,操作如下: 用系統名+類名作為key,系統名+類名+方法名+參數名作為value儲存到緩衝,再用系統名+類名+方法名+參數名作為key,查詢到的資料作為value儲存到緩衝。 如果是增、刪、改操作,則用CacheDelete方法進行攔截,操作如下: 根據系統名+類名作為key,取出對應的value值(系統名+類名+方法名+參數名),再以取出的系統名+類名+方法名+參數名作為key,依次刪除對應的value值。如何配置redis? 在core和ear的pom檔案添加如下依賴
<dependency> <groupId>com.tgb</groupId> <artifactId>ejbredis-cache</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency>
在core的resources添加如下設定檔 cache.xml配置的是redis服務的資訊:
<?xml version="1.0" encoding="UTF-8"?><redis-server> <host>192.168.24.46</host> <port>6379</port> <expire>0</expire> <timeout>0</timeout> <password></password> <prefixion>Basic</prefixion></redis-server>
在需要被攔截的方法添加如下註解 到此,關於redis在java-itoo中的實現思路和實現方式已經講解完畢,希望可以協助大家成長進步。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
redis在java-itoo的實現思路