讓redis充當mysql快取的時候如何快取mysql的資料關係?

時間 2021-05-11 13:51:17

1樓:Grissom

使用者資訊、物品資訊此類可以用ID作為key,內容全部序列化後儲存為String,注意修改的之後要清除redis的key,不要嘗試去更新,併發下會寫入髒資料。在關聯查詢,比如獲取我的物品,可以先簡單查詢取需要的物品ID,再使用redis mget獲取快取資訊。

對於論壇帖子列表,商品列表這樣會用到mysql的filter和order的,乃至多表聯合查詢的,可以按照查詢的引數作為key,儲存整個SQL的結果,此類快取很難做精確清除,簡單的做法是減少快取時間,自然淘汰,複雜一點可以考慮主動建立熱門快取,分級快取等等。

2樓:彼得潘大叔

hash結構 ,a 表 b 表

a_pid:

b表也有個相應hash結構

b_pid:

...精確查詢a左聯b的話,先用a_pid,再根據下面關聯b_pid去 b hash拿對應資料。

3樓:黃輝馮

像redis 這種key-value資料庫,你如果非要拿他當mysql用的話,除了使用他自己的hash表,還需要自己建立索引關係,比如,兩hash表關聯,你需要自己set乙個key-value,在這個set中建立兩表關係

4樓:

簡答一下:

mysql內建快取。

redis可以快取比較耗時的結果集,例如置頂的帖子列表、熱門帖子列表啥的,直接儲存html,拿來即用。資料同步通過過期重算完成。

5樓:小烏龜

你問的是怎麼在保持一致性的前提下提高mysql效能。這和redis無關,你應該增加mysql資料庫的記憶體,或者用tidb之類的分布式資料庫。

如果不需要保證強一致性,才是redis等普通高效能快取的場景。這個時候不需要binlog什麼東西,快取的大部分都是長期不變的東西。具體快取什麼看你業務需要加速的熱點是什麼。

你說的幾種形式都有可能看具體情況使用。

6樓:季長冰

呃,不是這麼用的吧,你換個思路看看:mysql是乙個資料查詢系統,所以快取的key就是查詢方法和查詢條件的組合,可以理解為key就是sql語句,不命中就去sql還是其他什麼東西計算並儲存結果到快取,你快取過程沒必要啊

redis如何用於快取

zjcdxx zhu 老實說,現在回頭看看,hibernate其實並不完美,要寫很多對映,而且後期優化很困難 還是jdbc,純sql的那種最直觀,也最方便 用了pipeline嗎,用了lua script嗎 redis效能還是很ok的,可能會發生阻塞的時候,由於是單執行緒。資料結構key設計的好,方...

redis快取資料,記憶體佔滿,怎麼解決?

彼得潘大叔 1.加記憶體 2.清理資料,設定 lru 過期機制 3.搭集群或者再弄個例項用twemproxy均衡資料資料遷移的話直接將rdb檔案copy過去,再啟動例項。 汪周洋 不影響線上執行,無非就是先搭一套集群,然後先從集群裡面找,如果集群裡面沒有在去老機器上面找,之後就一直往集群裡面操作了,...

redis是否可以代替mysql進行資料儲存?

Tony 簡單地說,Redis儲存的rdb和aof都不是為了查詢,只是乙個備份。如果你想做到Redis支援儲存,同時支援查詢,需要改造Redis。可以參考乙個工具 http 做到這點。否則,還是用MySQL,但MySQL的效率不如Redis,但乙個是SQL,乙個是NoSQL,應用場景不同。 lcam...