欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql查詢條件模糊,Redis如何彌補傳統MySQL架構的不足

傅智翔2年前20瀏覽0評論
mysql查詢條件模糊,Redis如何彌補傳統MySQL架構的不足?

談一下我的理解,如果有不對的地方,請留言指正。

MySQL+Redis

Redis自身是可以做數據持久化的,很多同學都會想Redis應該可以替代MySQL,但是我們使用一項技術、一個框架的時候,不是看它能不能,而是要看它適合不適合。

所以大多數公司的存儲都是MySQL+Redis,MySQL(或者其他關系型數據庫)作為主存儲,Redis作為輔助存儲,被用作緩存,這樣可以加快訪問讀取的速度,提高性能。

Redis被用作緩存,以減少數據庫IO的讀操作,減輕數據庫的壓力,例如:

存儲熱點數據:經常會被查詢,但是不經常被修改或者刪除的數據;

計數器:諸如很多論壇用于統計點擊數;

分布式鎖及單線程機制;

最新列表、排行榜:請不要使用select top 10 from xxxx。

劃重點,下面介紹一下緩存穿透

很多時候,程序員習慣先查詢Redis,查詢不到的話再去查詢數據庫,能查到的話再寫入Redis中,認為這樣不僅緩解了數據庫的壓力,同時也能保證數據的準確性。

但是由于緩存不命中就會查詢數據庫,如果一直查詢不到的話,就導致每次請求都會查詢數據庫,如果短時間內有大量這樣的請求,那么數據庫可能會扛不住。

這就是緩存穿透。

其實應對的方法也很簡單,查詢不到的數據,也緩存到Redis中,并設置數據的過期時間。

舉個不一定恰當的例子,例如Redis中緩存員工信息,提供接口根據工號查詢員工信息:

接口入參工號A001。

系統先在Redis中查詢,查詢不到。

系統去數據庫中查詢,也查詢不到。

系統插入Redis,key=A001,value=null,設置過期時間五分鐘。

這樣,五分鐘之內再根據A001查詢,不會穿透到數據庫。

四分鐘后,數據庫中插入了A001的數據。

五分鐘后,Redis中數據過期,下一次請求過來,會查詢數據庫,并把信息加載到Redis中。

希望我的回答,能夠幫助到你!

我會持續分享Java程序開發、架構設計、職業發展等方面的知識和見解,希望能得到你的關注今日頭條【會點代碼的大叔】,轉載請注明出處。