小編給大家分享一下如何實現通用的redis增刪改查腳本,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯建站主要從事成都做網站、網站建設、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務息烽,十余年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575
??如果只是為了簡單的增刪改查,那么只需要告訴我是哪個類要進行序列化反序列化,告訴我key的前綴是什么,不就行了嘛?至于說過期時間,咱們這一次可以先不考慮,如果需要加上過期時間,也不是一件困難的事情,那么我們稍作思考,使用Java中的泛型,就可以得到下面的基礎類:
public class BasicDataRedisService{ /** * Redis key prefix String * Redis中的key前綴 */ private String prefixString; private Class targetClass; @Autowired private StringRedisTemplate redisTemplate; public BasicDataRedisService(String prefixString, Class targetClass) { this.prefixString = prefixString; this.targetClass = targetClass; } // -------------------------以下為內部使用--------------------------------- protected String generateKey(String id) { return prefixString + "id:" + id; } protected T getByKey(String key) { T result = ValueRedisUtil.getRedisObject(redisTemplate, key, targetClass); return result; } protected boolean setByKey(String key, Object object) { return ValueRedisUtil.setRedisObject(redisTemplate, key, object); } protected boolean deleteByKey(String key) { return ValueRedisUtil.delRedis(redisTemplate, key); } // -------------------------以下對外提供--------------------------------- /** * 根據id獲取 * * @param id * @return */ public T getById(String id) { String key = generateKey(id); return getByKey(key); } /** * 根據id刷新 * * @param data * @param id * @return */ public boolean setByModel(Object data, String id) { String key = generateKey(id); return setByKey(key, data); } /** * 根據id刪除 * * @param id * @return */ public boolean deleteById(String id) { String key = generateKey(id); return deleteByKey(key); } }
??假設我們要查詢用戶,那么我們只需要這么寫:
@Service public class UserRedisServiceImpl extends BasicDataRedisService{ private static String PREFIX = "henbao:user:"; public UserRedisServiceImpl() { super(PREFIX, User.class); } }
??雖然這樣寫節(jié)省了代碼量,想要實現的便捷也能夠實現,但是總覺得哪里有點不對勁,操作似乎還可以再騷一點。少年,如果你能有這樣的想法,那么恭喜你,你對代碼有更高的追求。我們現在寫了兩次類,寫常量來表名Redis中的前綴是什么。我們在使用Spring的時候通常不是這樣來告訴底層框架這些東西的,我們通常是使用注解吧?故,Redis Repositories
就登場了。
??雖然這樣寫我們很開心,但是有一些開發(fā)人員希望redis中存儲的內容與db層的Model完全一致,且修改數據庫表結構后還會逆向生成覆蓋一波……那么請你自己再開發(fā)一下,為Spring提交更加強大的代碼吧!目前更建議單獨有redis層model的使用此方式,當然了,注解掃描該有的問題它都有,大家處理的時候保持耐心即可。
以上是“如何實現通用的Redis增刪改查腳本”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!