1樓:
貌似其他回答都沒有說到這一點:redis的持久化功能,還可以防快取雪崩。應該說這才是redis支援持久化的必要性所在。
例如假設後台架構是redis+mysql,且redis關閉了持久化,redis伺服器某天突然宕機,丟失了記憶體所有快取,當redis伺服器恢復後,必然要重新從mysql拿資料做快取,如果讀資料請求非常集中,mysql可能就癱瘓了,此即為快取雪崩。
如果遇到土豪公司只用redis資料庫而不用mysql,就沒有什麼快取雪崩問題,因為此時redis根本就不是快取功能而是儲存功能了。
2樓:wuxinliulei
首先redis在key value值查詢的速度高於mysql,所以快取有利於提高效能;
redis是記憶體型資料庫,不可能儲存過大的資料;而mysql是儲存在硬碟上的,可以支援更大規模的資料,成本更低
以乙個黑名單功能為例:
mysql中的表結構可能是一行記錄的列名分別為
roleId userId serverId blackedRoleId blackedUseId blackedServerId createTime status 等等
以下幾種操作可能的流程:
1.查詢角色IdA的所有黑名單資料
1)製造A角色黑名單的blacklistrediskey,並查詢此key,是否快取有此角色的黑名單列表
若有,則直接返回,若沒有,則進入下一步
2) 向mysql查詢角色的黑名單列表,即使用sql語句,查詢到結果後
3) 使用blacklistrediskey儲存到redis當中
這裡儲存的redis資料型別為hash型別即Map,map的key為黑名單角色id,value值為黑名單角色資訊,當然也可以用list或者set來儲存;
這裡更新快取時可能會用到redis的pipeline技術,即一次性的將多條redis指令寫入redis資料庫,同時我們一般都會設定redis的快取過期時間用來清除長期不用的快取。
3樓:當浮一大大白
mysql的memory 資料庫了解下,既然用mysql了就不要再用redis了,redis能解決的場景,mysql都能解決,redis解決不了的場景,mysql也能解決了。 redis只能算是個外掛程式,如果沒有用mysql資料庫,那redis算是個不錯的解決方案。不清楚為啥在國內這麼火....
4樓:二號獵人
首先要知道mysql儲存在磁碟裡,redis儲存在記憶體裡,redis既可以用來做持久儲存,也可以做快取,而目前大多數公司的儲存都是mysql + redis,mysql作為主儲存,redis作為輔助儲存被用作快取,加快訪問讀取的速度,提高效能
那麼為什麼不直接全部用redis儲存呢?
我的看法是:因為redis儲存在記憶體中,如果儲存在記憶體中,儲存容量肯定要比磁碟少很多,那麼要儲存大量資料,只能花更多的錢去購買記憶體,造成在一些不需要高效能的地方是相對比較浪費的,所以目前基本都是mysql(主) + redis(輔),在需要效能的地方使用redis,在不需要高效能的地方使用mysql,好鋼用在刀刃上
學習Redis從這裡開始 - 非同步社群
這個講得不錯,可以看看
5樓:彼得潘大叔
一般來說,寫入資料是直接到mysql,讀取類的是redis。 這樣就說 mysql->redis的同步用的比較多。 mysql作為資料持久化和管理比redis好太多,redis大多只用來做資料讀取快取、佇列、鎖、等等的使用。
持久化的話也提供了rdb、aof 保證資料的實時不丟失。
mysql->redis實時同步可參考這個配置https://
6樓:靳洪飛
redis和mysql要根據具體業務場景去選型mysql:資料放在磁碟
redis:資料放在記憶體
redis適合放一些頻繁使用,比較熱的資料,因為是放在記憶體中,讀寫速度都非常快,一般會應用在下面一些場景
排行榜計數器
訊息佇列推送
好友關注,粉絲
還是具體問題具體分析,這裡有文章分享:Redis文章分享看能幫到你嗎?
7樓:
只是做快取的話,memcache似乎更合適
redis和mysql當然可以各自儲存不同資料啊
如果只是IO,沒有計算等耗時操作的話,單執行緒應該更高效
契 的幾種古今讀音用法 語義有何區別?
小神龍周旭 可以使用 漢字古今中外讀音查詢 語言維基 網頁版,中古擬音後有簡略說明。網址 漢字古今中外讀音查詢 語言維基 不過我也搞不清楚這個網站和 王贇 Maigo 先生是什麼關係。題主比較之後,發現 似乎都說明曾經有一種s開頭的入聲讀法 那不妨查一下字典,我建議使用 辭源 第三版 或者 漢語大字...
git rebase有哪些用法?
我來說兩個經典用法,來看看git rebase用法有多麼誘人 案例 去除提交列表中的某個commit,例如在master分支上A B C D E F,除去D。方案一 git checkout C 將HEAD切換到C提交 git cherry pick master master 即E,將E放到C後面...
介詞 in 有哪些用法?
已登出 刷過了English Prepositions Explained的in部分,我大概說一下 in的概念是這樣的 o 也就是有乙個東西被圍在邊界裡面了,和into相比,更加強調狀態而不是動作 說一下幾個困難的地方吧 其中一種是in circumstances,因為 circum 其實有in的意...