1. 程式人生 > >使用Redis需要注意的資料安全問題

使用Redis需要注意的資料安全問題

一、Redis宕機後的資料丟失問題
 Redis會定期將記憶體中的資料同步到磁碟,這是我們大家都知道。而且是寫資料越頻繁同步的也就越頻繁,這是在Redis配置檔案中可配置的。
 一般來說,宕機後可能丟失小量資料是在所難免的。可如果宕機後重啟發現丟失大量資料這就不正常了,查了些資料,受益非淺。
 Redis的資料回寫機制分同步和非同步兩種:
 1、同步回寫即SAVE命令,主程序直接向磁盤迴寫資料。在資料量大的情況下會導致系統假死很長時間,這個情況下對Redis的訪問通常也會得不到響應,所以一般不是推薦的。
 2、非同步回寫即BGSAVE命令,主程序fork出一個新程序後,複製自身並通過這個新的程序回寫磁碟,回寫結束後新程序自行關閉。由於這樣做不需要主程序阻塞,系統不會假死,一般預設會採用這個方法。

 個人感覺方法2採用fork主程序的方式有些拙劣,但似乎是唯一的方法。記憶體中的熱資料隨時可能修改,要在磁碟上儲存某個時間的記憶體映象必須要凍結。凍結就會導致假死。fork一個新的程序之後等於複製了當時的一個記憶體映象,這樣主程序上就不需要凍結,只要子程序上操作就可以了。
 在小記憶體的程序上做一個fork,不需要太多資源。但當這個程序的記憶體空間以G為單位時,fork就成為一件很恐怖的操作。如果是在一個有16G記憶體配置的主機上fork出一個13G記憶體的程序呢?如果swap有8G,那麼肯定會報記憶體無法分配的,這樣資料就無法回寫進磁碟。如果這個主機宕機了,那麼丟失的資料就不是一點點了。而且越是改動頻繁的主機上fork也越頻繁,fork一個大資料程序的操作所花費的代價也不容忽視,還要考慮實體記憶體與swap的資料交換所造成的消耗。

 所以在使用Redis時要保證資料量 小於 實體記憶體的一半,個人這麼認為。

二、把Redis當快取服務來使用
 看過很多文章,都拿Redis和Memcached來比較使用。剛開始也覺得Redis可以代替Memcached。可後來細想後發現有嚴重問題。
 如果Memcached伺服器宕機了,那麼伺服器重啟後,Memcached裡所快取的資料也就被清空了。再有資料訪問時會先從關係型資料庫中查詢出來後,往Memcache存一份。讓下一次同樣的資料訪問可以命中Memcached。
 而Redis不僅會將資料快取在記憶體中,也會將資料回寫進磁碟。那麼如果Redis伺服器宕機了,宕機後關係型資料庫中的資料被更新過了。然後重啟Redis伺服器,此時Redis伺服器裡的資料和關係型資料庫中的資料就可能不一致了。除非重啟Redis後立即清空其中做為快取的資料。

 當然,也可以使用主從模式的Redis叢集來降低此類風險。如果宕掉的是從伺服器那不會出現上述問題,但如果宕掉的是主伺服器呢,問題則依舊。
 因此我個人認為用Redis來替代Memcached是不安全的。

相關推薦

使用Redis需要注意資料安全問題

一、Redis宕機後的資料丟失問題 Redis會定期將記憶體中的資料同步到磁碟,這是我們大家都知道。而且是寫資料越頻繁同步的也就越頻繁,這是在Redis配置檔案中可配置的。 一般來說,宕機後可能丟失小量資料是在所難免的。可如果宕機後重啟發現丟失大量資料這就不正常了,查了些資料,受益非淺。 Redis的資料回寫

淺談Android開發中需要注意安全問題

什麼是安全問題?       從黑客的角度定義,只要黑客能夠從app中找到一些方法獲取我們的原始碼根據某些明顯的欄位得到重要資訊從而修改程式以達到一定目的;竊取使用者資訊;竊取本地重要資訊間接可以

JSONP使用以及需要注意安全問題

JSONP 全稱是 JSON with Padding,JSONP可能會引起CSRF(Cross-site request forgery 跨站請求偽造)攻擊或XSS (Cross Site Scrip

Python--Redis實戰:第四章:資料安全與效能保障:第8節:關於效能方面的注意事項

習慣了關係資料庫的使用者在剛開始使用Redis的時候,通常會因為Redis帶來的上百倍的效能提升而感到欣喜若狂,卻沒有認識到Redis效能實際上還可以進一步的提高。雖然上一節介紹的非事務型流水線可以儘可能地減少應用程式和Redis之間的通訊往返次數,但是對於一個已

使用redis快取資料需要注意的問題以及個人的一些思考和理解

之前我有部落格也嘗試過使用redis,在實際的專案中確實作用挺大的。至少對於資料的頻繁讀取來說都起著至關重要的作用。 但是隨著技術的學習,慢慢的業務要複雜起來,以後也許會用到redis叢集,所以在這邊查詢了一些資料,做了一些思考和理解。 如果有問題,請提出,虛心接受,認真學習。 一般的redi

21.13-21.17 redis常用操作,資料型別,操作鍵值,安全設定

21.13/21.14/21.15 redis常用操作  Redis常用操作 (string, list)  set key1 aminglinux  get key1  set key1 aming//第二次賦值會覆蓋  setnx

資料安全建設為什麼需要資料安全治理

回看過去二十餘年,政府與企業的資訊化程度不斷加深,IT系統的複雜度與開放度隨之提升;伴隨雲端計算、大資料、人工智慧等新興技術的飛速發展,資料作為支撐這些前沿技術存在與發展的生產資料,已經成為組織的核心資產,受到前所未有的重視與保護。   美國安全公司 Carbon Black 2017年釋出

資料中心機房監控防火封堵消防需要注意哪些事項?

  大家都知道資料中心機房是非常重要的地方,機房中的防火裝置是機房動力環境監控中的一部分。而機房監控中防火封堵系統對資料中心機房監控的防火安全提供重要的保障。防火封堵系統不但具有防火,還要防煙防鼠的作用。這就要求防火系統封堵系統具有一定的耐火性,氣密性和便於擴容等功能。  按國家有關標準規定,機房需要在以下部

資料安全治理需要組織先行

資料安全治理是一套完整的可供組織進行資料安全建設的成熟體系,是以資料資產的正常使用為前提,保障資料在各使用場景下的安全,促進資料價值的釋放與共享。該體系旨在幫助政府與企業進行資料安全建設的整體思考與規劃,為資料安全建設的設計與實施者提供具有參考價值的資料安全治理整體方案及案例實踐。 資料安全治理是一

Python--Redis實戰:第四章:資料安全與效能保障:第7節:非事務型流水線

之前章節首次介紹multi和exec的時候討論過它們的”事務“性質:被multi和exec包裹的命令在執行時不會被其他客戶端打擾。而使用事務的其中一個好處就是底層的客戶端會通過使用流水線來提高事務執行的效能。本節將介紹如何在不使用事務的情況下,通過使用流水線來進一步提升命令的執行效能。 之前章節曾經介紹過一

spring-data-redis 使用過程中需要注意的一點(序列化選擇)

在專案中需要用到redis做快取,於是採用spring-data-redis,並且打算自己封裝一個redis的靜態工具類。後來在進行單元測試的過程中發現了一個容易出錯的地方,於是打算記錄下來,並分享給各位朋友。 這裡主要說下碰到的問題,首先,採用了spring-

redis中pipeline用法需要注意的地方

  使用pipeline效率確實要搞許多,但是有一個細節請讀者注意了。下面我用圖片展示。 執行了100000條命令居然只要1543毫秒,但是再看看 這個變數age自增10萬之後的結果.。 居然只執行了90348次,將近漏了一萬次! 後面加了sync這個方法然後再 然後再

Spring 整合redis叢集 實現 以及過程中需要注意的問題點

一,準備工作: 1.首先安裝好redis叢集,啟動並配置叢集。 2.SpringMVC環境,看專案或個人需要,可以使SpringMVC的web專案,也可以是隻使用SpringBean管理器。 二,著手配置: 由於專案是由maven管理的所以需要的jar 包新增到maven

Android值資料讀寫在sd卡需要注意的事項

使用Sdcard注意事項: 1.許可權問題: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 2.硬性編碼問題:通過 Environment可以獲取sdca

資料分析需要注意什麼技能呢?

很多人想要進入資料分析行業,於是開始學習資料分析知識。但是大家可能不知道資料分析需要注意什麼,很多人在進行資料分析工作的時候都或多或少的走了些彎路,這樣即使學習了知識,在實際的資料分析工作中依舊不能夠做好資料分析工作,那麼大家知道不知道資料分析學習需要注意什麼技能呢?下面就由小編為大家

資料結構中棧一些需要注意的地方

1. 棧的定義 棧(stack)是限定在僅在表尾進行插入和刪除操作的線性表。我們把允許插入和刪除的一端稱為棧頂(top),另一端稱為棧底(bottom),不含任何資料元素的棧稱為空棧。棧又成為後進先出的線性表。 棧的插入操作,叫作進棧,也稱壓棧、入棧;棧的刪除操作,叫作出棧

人工智慧和大資料的開發過程中需要注意這12點

https://www.toutiao.com/i6636522371094151694/   2018-12-19 10:16:15 人工智慧是近年來科技發展的重要方向,在大資料時代,對資料採集、挖掘、應用的技術越來越受到矚目。在人工智慧和大資料的開發過程中,有哪些特別需要注

springmvc接收復雜型別的json資料需要注意的地方

1.如果接收的是普通的資料型別或者單物件 後端的方法上面什麼也不需要處理,只需要將物件放入到引數上面就可以了 2.如果接收的是複雜型別 例如物件裡面還包含物件或者是集合等,後端的方法引數上面只需要加

phpstudy不同版本切換時遇到Mysql資料data直接copy需要注意的問題

最近由於電腦龜速,所以重灌系統,由於公司目前使用的是phpstudy整合環境,所以重灌新版本的phpstudy時遇到一些問題: 1.安裝後,WWW目錄下檔案除了phpMyadmin其它的web應用可以

Redis的高階應用——資料安全

      Redis的資料儲存在記憶體中,速度十分快。這也就意味著,一個惡意破解redis資料庫密碼的使用者,可以在一秒鐘進行更多的嘗試。如果使用者密碼級別較低或更換頻率過長,就會造成致命的危害。