真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

如何實現通用的Redis增刪改查腳本

小編給大家分享一下如何實現通用的redis增刪改查腳本,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯建站主要從事成都做網站、網站建設、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務息烽,十余年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575

1.思考有哪些重復代碼?

??如果只是為了簡單的增刪改查,那么只需要告訴我是哪個類要進行序列化反序列化,告訴我key的前綴是什么,不就行了嘛?至于說過期時間,咱們這一次可以先不考慮,如果需要加上過期時間,也不是一件困難的事情,那么我們稍作思考,使用Java中的泛型,就可以得到下面的基礎類:

2.基礎服務類

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);
    }

}

3.自定義一個查詢服務類

??假設我們要查詢用戶,那么我們只需要這么寫:

@Service
public class UserRedisServiceImpl extends BasicDataRedisService {

    private static String PREFIX = "henbao:user:";

    public UserRedisServiceImpl() {
        super(PREFIX, User.class);
    }
}

4.思考這樣寫的弊端

??雖然這樣寫節(jié)省了代碼量,想要實現的便捷也能夠實現,但是總覺得哪里有點不對勁,操作似乎還可以再騷一點。少年,如果你能有這樣的想法,那么恭喜你,你對代碼有更高的追求。我們現在寫了兩次類,寫常量來表名Redis中的前綴是什么。我們在使用Spring的時候通常不是這樣來告訴底層框架這些東西的,我們通常是使用注解吧?故,Redis Repositories 就登場了。

5.各有利弊

??雖然這樣寫我們很開心,但是有一些開發(fā)人員希望redis中存儲的內容與db層的Model完全一致,且修改數據庫表結構后還會逆向生成覆蓋一波……那么請你自己再開發(fā)一下,為Spring提交更加強大的代碼吧!目前更建議單獨有redis層model的使用此方式,當然了,注解掃描該有的問題它都有,大家處理的時候保持耐心即可。

以上是“如何實現通用的Redis增刪改查腳本”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!


標題名稱:如何實現通用的Redis增刪改查腳本
網站地址:http://weahome.cn/article/ijdjpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部