論redis的內存占用


目前大部分成程序員都將一些數據放入到了緩存(redis)中,但是你是否對這個redis內存占用了解呢?下面我們就來說一下redis的內存最優使用:

1、我們首先來介紹一下我們在存入大量數據到redis中后會出現部分數據丟失情況:

  Redis是用內存當緩存的。內存是無限的嗎?相反,內存是很寶貴而且是有限的,磁盤是廉價而且是大量的。可能一台機器就幾十個G的內存,但是可以有幾個T的硬盤空間。Redis主要是基於內存來進行高性能、高並發的讀寫操作的。

  那既然內存是有限的,比如Redis就只能用10個G,你一直往里面寫數據,一直寫一直寫最后10個G都用的差不多了,你還寫會,你想想會發生什么?當然會干掉一些的數據了,然后就保留10個G的數據。你說會不會造成數據丟失?

  那Redis會干掉哪些數據?保留哪些數據呢?當然是干掉不常用的數據,保留常用的數據了。

  所以說,這是緩存的一個最基本的概念:數據是會過期的。要么是你自己設置個過期時間,要么是Redis自己給干掉。

  所以你的Redis如果使用不當,把生產數據存到里面,又沒有去持久化到mysql,那就會有丟失的可能。

2、我們再來介紹一下過期時間:

  有一種就是如果你給key設置好了一個過期時間,你知道到一定的時間再去查這個key就沒有了,但是你知道redis是怎么給你弄成過期的嗎?什么時候刪除掉?

  如果你不知道,在實際的使用過程中你就可能會發現這么一個問題:為啥好多數據明明應該過期了,結果發現redis內存占用還是很高?那是因為你不知道Redis是怎么刪除那些過期key的

  舉例,Redis 內存一共是10個G,你現在往里面寫了5個G的數據,然后你對這些數據全都設置了10分鍾之后過期,結果10分鍾之后,你再來查看看,Redis的內存使用率怎么還是50%呢?5個G的數據都過期了,我從redis里查,是查不到了,結

  果過期的數據為啥還占用着Redis的內存呢。

  如果你連這個問題都不知道,上來就懵了,回答不出來,建議你使用Redis之前多做做功課,不然你寫代碼的時候,想當然的認為寫進Redis的數據就一定會存在,后面導致系統各種漏洞和bug,就不好弄了。

好了今天就介紹這些吧,以后有時間了繼續聊!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM