## SpringBoot Tair 實現資料快取
阿新 • • 發佈:2018-12-15
Tair詳細描述: Tair是一個Key/Value結構資料的解決方案,它預設支援基於記憶體和檔案的兩種儲存方式,分別與快取和持久化儲存對應。Tari的功能是get、put、delete以及批量介面。 Tair中的每個資料都包含版本號,版本號在每次更新後都會遞增。這個特性有助於防止由於資料的併發更新導致的問題。
直接看程式碼: pom.xml
<!--tair快取 會自帶一個mina-core包:--> <dependency> <groupId>com.taobao.tair</groupId> <artifactId>tair-client</artifactId> <version>2.3.4</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
class類程式碼:
@Component public class TairManager extends DefaultTairManager { @Value("${tair.servers}") private String servers; @Value("${tair.sysFix}") private String sysFix; @Value("${tair.group.name}") private String cacheGroupName; @Override @PostConstruct public void init() { String[] arr = servers.split(","); configServerList = Arrays.asList(arr); this.groupName = cacheGroupName; super.init(); } }
其實tair本身有put,get方法,但是為了更方便我們使用,可以進行相應的封裝:
/** * @param namespace 名稱空間 * @param key * @return */ public <T> T getValue(int namespace, Serializable key) { Result<DataEntry> resultEntry = super.get(namespace, key); if (resultEntry.isSuccess()) { DataEntry dataEntry = resultEntry.getValue(); return null != dataEntry ? (T) dataEntry.getValue() : null; } return null; } /** * @param namespace 名稱空間 * @param key,value * @version 版本號 * @expireTime 失效時間 * @return */ public void putCache(int namespace, Serializable key, Serializable value, int version, int expireTime){ ResultCode resultCode = super.put(namespace, key, value, version, expireTime); if(!resultCode.isSuccess()){ throw new RuntimeException("putCache error...ResultCode:"+resultCode.getCode()); } } /** * 指定名字空間的永久快取 * @param namespace * @param key * @param value * @失效時間為0,代表永久 */ public void putCache(int namespace, Serializable key, Serializable value) { putCache(namespace, key, value, 0, 0); }
使用的時候註解即可:
@Autowired
TairManager tairManager;
在工作中快取是非常實用的,所以好好學起來吧!