應用Redis實現數據的讀寫,同時利用隊列處理器定時將數據寫入mysql,此種情況存在的問題主要是如何保證mysql與redis的數據同步,二者數據同步的關鍵在於mysql數據庫中主鍵,方案是在redis啟動時去mysql讀取所有表鍵值存入redis中,往redis寫數據時,對redis主鍵自增並進行讀取,若mysql更新失敗,則需要及時清除緩存及同步redis主鍵。
String tbname = "login"; //獲取mysql表主鍵值--redis啟動時 long id = MySQL.getID(tbname); //設置redis主鍵值--redis啟動時 redisService.set(tbname, String.valueOf(id)); System.out.println(id); long l = redisService.incr(tbname); System.out.println(l); Login login = new Login(); login.setId(l); login.setName("redis"); redisService.hmset(String.valueOf(login.getId()), login); boolean b = MySQL.insert("insert into login(id,name) values(" + login.getId() + ",'" + login.getName() + "')"); /** * * 隊列處理器更新mysql失敗: * * 清除緩存數據,同時主鍵值自減 */ if (!b){ redisService.delKeyAndDecr(tbname, "Login:"+String.valueOf(login.getId())); } System.out.println(redisService.exists("Login:"+String.valueOf(login.getId()))); System.out.println(redisService.get(tbname));
如果,您認為閱讀這篇博客讓您有些收獲,不妨點擊一下右下角的【推薦】。
如果,您希望更容易地發現我的新博客,不妨點擊一下左下角的【關注我】。
如果,您對我的博客所講述的內容有興趣,請繼續關注我的后續博客,我是【Ruthless】。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。