高能預警!看完這篇別再說你不懂單機redis了

2020-12-23 牛鷺學院軟體測試

本文來自牛鷺學院學員:廖清蓉

很多剛剛進入軟體測試行業的人對單機版的redis認識還不全面,別人問你redis是啥吱唔半天也說不出個所以然,今天牛鷺學院就系統性的為大家梳理一下吧~

目錄

1、Redis介紹

Redis與MySQL/Oracle的區別2、Redis數據結構

單機redis搭建redis基本數據類型用法3、Redis性能測試

4、Redis架構模式

Redis介紹

與MySQL不同的是,redis是一種非關係型資料庫。Mysql存儲在磁碟裡,而Redis存儲在內存裡。

Redis既可以用來做持久存儲,也可以做緩存,而目前大多數公司的存儲都是Mysql +Redis,Mysql作為主存儲,Redis作為輔助存儲被用作緩存,加快訪問讀取的速度,提高性能。

Redis資料庫有16個,分別是0-15,每個資料庫用數字命名,而且每個資料庫的連接密碼都一樣,redis只允許一個密碼。資料庫之間不能共享,並且基於單機才有,如果是集群,就沒有資料庫的概念了。

redis之所以分這麼多個資料庫,也是為了區分業務,不同的業務存放在不同的庫,但是一個redis,一般是給一個項目用,項目內的不同業務,單獨用一個庫,這樣不會相互有數據交叉。現在很多微服務項目,一個項目裡有多個微服務,redis統一由團隊管理,每個服務連接自己的庫就可以了。

Redis與MySQL/Oracle的區別

存儲介質:

Redis存儲在內存,但是可以將數據持久化到硬碟。MySQL/Oracle將數據持久化的存儲到硬碟;

資料庫類型:Redis屬於非關係型資料庫;MySQL/Oracle關係型資料庫

存取效率:Redis直接在內存中存取數據效率高;MySQL/Oracle每次請求訪問資料庫時,都存在著I/O操作,如果反覆頻繁的訪問資料庫。

會在反覆連結資料庫上花費大量時間,從而導致運行效率過慢;反覆的訪問資料庫也會導致資料庫的負載過高Redis數據結構

測試案例

【問題描述:面對後臺一張"表"400w的資金帳戶數據量(Hadoop HDFS分布式系統存儲映射後的其中一張表),中臺接口通過impala查詢(類似Oracle查詢語法)將得到的結果以bitmap的形式存放至Redis,供其它中臺接口調用,最終將數據在前端展示。】

測試案例分析:

內存佔用過大問題:

經過計算1byte=8bit, 每個客戶進行一次查詢存儲的key佔用的內存400w/8/1024/1024=0.47M,粗略估計2000客戶進行查詢,存儲key佔用的內存=2000*0.47(將近1G),如果查詢頻繁,則必然會出現內存溢出的風險。

優化方法:

針對客戶的操作頻率,一般不會不停地進行數據查詢操作,所以可以將客戶查詢存儲的key設置過期時間,這樣可以減小內存壓力

單機redis搭建

redis安裝三部曲:

準備好redis的安裝包,用xftp傳輸至Linux下root目錄下,解壓並進入redis -5.0.7目錄下

安裝C語言編譯器yum install gcc

2.執行命令 make MALLOC=libc,此時會生成一個redis的源文件

3.輸入make install,當有如下提示,表示你是安裝成功的

此時我們查看一下redis的配置文件ls | grep conf並進入到配置文件裡設置連接vi redis.conf

Esc + /輸入port 查看默認的埠號,輸入127,此時會跳轉到127的關鍵字部分,我們在最後一個127部分加入如下一行,用於綁定自己的IP位址,當然也可以走默認的,不做修改

保存退出,去啟動它src/redis-server redis.conf

如果能夠看到如下的圖形,表示構建成功

在root目錄下執行ps -ef | grep redis查看redis是否已在運行;

然後進入到redis目錄下,輸入命令src/redis-cli -h 192.168.8.3 -p 6379進入redis資料庫操作

redis基本數據類型用法

資料庫之間的切換

Redis支持五種數據類型:

1.字符串(String):增刪改查

set key valuedel keyset key newvalueget keymset key1 value1 key2 value2 --批量增加

2.哈希(Hash)

hset key field_1 value1 – 增hmset key field_1 value1 filed_2 value2 --批量增hdel key filed-- 刪hset key field newValue – 改hget key field --查某一field值hvals filed – 查key對應的field-valueshlen key --計算field個數hkeys --獲取所有field

3. 列表(list)

rpush key value [value …] --右插lpush key value [value …] – 左插linsert key BEFORE|AFTER pivot valuelrange key start stoplindex key indexllen keylpop key – 左彈rpop key – 右彈lset key index value --修改下標index的元素值

4. 集合(sets)

– 集合內元素操作

sadd key element [element …] --增srem key element [element …] --刪scard key --計算元素個數sismember key element --判斷元素是否在集合中spop keysmembers key --獲取所有元素– 集合間元素操作

sinter key [key …] --交集sunion key [key …] – 併集sdiff key [key …] --差集– 將結果保存

sinterstore destination key [key …]suionstore destination key [key …]sdiffstore destination key [key …]

5.有序集合(sorted sets)

Redis性能測試

Redis自帶了一個叫redis-benchmark工具來模擬N個客戶端同時發出M個請求

Redis架構模式

單機版

優點:簡單

缺點:內存容量有限;處理能力有限;無法高可用

集群版

優點:

主從複製:Redis 的複製(replication)功能允許用戶根據一個 Redis 伺服器來創建任意多個該伺服器的複製品,其中被複製的伺服器為主伺服器(master),而通過複製創建出來的伺服器複製品則為從伺服器(slave)。 只要主從伺服器之間的網絡連接正常,主從伺服器兩者會具有相同的數據,主伺服器就會一直將發生在自己身上的數據更新同步 給從伺服器,從而一直保證主從伺服器的數據相同。

————————————————

相關焦點

  • storm安裝教程 單機版
    應用場景包括推薦系統(實時推薦,根據下單或加入購物車推薦相關商品)、金融系統、預警系統、網站統計(實時銷量、流量統計,如淘寶雙11效果圖)、交通路況實時系統等等。storm一般從日誌系統通過kafka收集數據,然後對數據進行處理運算(運算可以結合資料庫以及hdfs的存量數據),不斷將運算結果寫入redis,然後需要展示這個運算結果的系統從redis讀取數據。運算結果寫入redis和讀取展示運算結果是不斷重複的(例如1秒一次),這樣能實時觀察數據的變化。
  • redis的主從複製
    單機有什麼問題機器故障 數據如何同步的問題(高可用)容量瓶頸QPS瓶頸 (分布式)什麼是主從複製一主一從 一主多從一個master可以有多個slave一個slave只能有一個master數據流向是單向的,master到slave複製的配置兩種實現方式slaveof 命令redis
  • 分布式鎖解決方案-Redis
    因此synchronized無法保證數據的一致性,這也是為什麼要學習分布式解決方案的原因## 分布式鎖需要滿足的幾點1.互斥;任何時刻只能有一個client獲取鎖2.釋放死鎖;即使鎖定資源的服務崩潰或者分區,仍然能釋放鎖3.容錯性;只要多數節點
  • Redis-Window Server快速搭建Redis Cluster集群
    /releases選擇redis 3.0+版本配置redis在redis安裝目錄中找到redis.windows.conf,修改配置文件中配置,修改選項如下:cluster-enabled yescluster-node-timeout
  • redis集群架構的演進之路
    一、redis的主從架構一開始我們的業務量不大時,一個redis節點就能滿足我們的業務需求,當我們的業務量不斷上漲,單臺redis節點已經不能滿足我們的業務需求時,這個時候redis的主從結構就出現了。
  • Redis緩存與NodeJS的初學教程
    雖然它最流行的用例是緩存,Redis還有很多其他用例,你可以利用它的快閃記憶體資料庫的快得驚人。在這個教程中,我們將給你一個快速介紹Redis。我們還將使用Redis為節點應用程式創建一個簡單的緩存,看看它是如何影響其性能的。
  • 看完不會輕易再說你有八拜之交了
    看完不會輕易再說你有八拜之交了 2020-11-30 10:09 來源:有畫說藝術看完不會輕易再說你有八拜之交了 返回搜狐,查看更多 責任編輯: 聲明:該文觀點僅代表作者本人,搜狐號系信息發布平臺,搜狐僅提供信息存儲空間服務。
  • 前方高能預警!廣州華多網絡科技有限公司告訴你這些不得不知的防騙...
    前方高能預警!廣州華多網絡科技有限公司告訴你這些不得不知的防騙技巧!大家可千萬不要相信,這是詐騙!下面來看看廣州華多網絡科技有限公司的高能預警。  兼職刷單類詐騙案件作案目標以在校大學生、家庭主婦等年輕人為主,犯罪分子利用網絡等平臺發布兼職刷單廣告,騙取受害人信任,讓其在網上購買指定的物品,犯罪分子承諾交易成功後將按一定的比例返還給受害人。
  • Redis詳解:sets數據類型及操作
    (integer) 1  redis 127.0.0.1:6379> sadd myset "world"  (integer) 0  redis 127.0.0.1:6379> smembers myset  1) "world"  2) "hello"  redis 127.0.0.1
  • 快速製作Redis Docker鏡像
    鏡像可以通過編寫DockerFile來鏡像redis編譯並打包成新的鏡像。From alpine:3.12.1  ADD https://mirrors.huaweicloud.com/redis/redis-6.0.9.tar.gz /
  • redis持久化和選擇
    持久化的作用什麼是持久化redis所有的數據保存在內存中,對數據的更新將異步地保存在硬碟中。Redis RDB寫日誌MySQL binlogHbase HlogRedis AOFredis地持久化地取捨和選擇RDB什麼是RDBredis在硬碟上創建一個二進位的rdb文件,redis啟動時會把這個rdb文件載入到內存中觸發機制- 主要三種方式save 同步save命令有一個問題,它是一個同步命令,如果數據很多的話
  • 高能預警,求職的路上,這3個坑不要去踩,小心吃大虧
    高能預警,求職的路上,這3個坑不要去踩,小心吃大虧現在求職的路上有許許多多的坑在等著別人往下面跳,因為某些原因,總是有人對現在的工作不是很滿意,然後就離職了,踏上了求職之路,但是求職的路上有太多自己不懂的東西,所以難免有時候會踩到一些坑坑窪窪的地方,導致自己摔了一跤,但是人不經過磕磕碰碰怎麼能夠成長起來。
  • 架構秘笈:移花接木,使用MySQL模擬Redis
    這年頭,你看到的東西未必就是你認為的東西。一個mysql協議的後面,可能是tidb;一個linux機器後面,可能是一個精簡的docker;你覺得xjjdog是個女的,但可能ta自己也不太清楚;而當你大呼php萬歲的時候,可能是研發人員和你開個玩笑,重寫了後綴,而後端用的卻是java。
  • 官方提示劇情高能預警
    至於官方更是表示106集《心之相》,劇情高能預警。天之墓守護者首先關於從「天之墓」走出來的神秘女子,漫迷的猜測可謂眾說紛紜。不僅猜測該人物可能是遠古舊神黃龍,甚至預測該人物可能和冥族大將不聞不問,存在某種「血緣關係」。
  • 跬步千裡——阿里雲Redis bitfield命令加速記
    這就是為什麼客戶使用了讀寫分離版,而只有master節點cpu使用高,其餘slave節點卻沒有收到這個命令的打散的原因。2. 思路和處理2.1 解決方案 方案一:改造Redis內核,將bitfield命令屬性標記為讀屬性,但是當其包含SET/INCRBY等寫屬性的子命令時候,仍舊將其同步到slave等。
  • 前方還有3個高能預警!
    這是什麼山?是不是有點川藏大雪山氣派?很氣派但江南的雪很少有第一場就能下得洋洋灑灑積雪盈寸、多日不化的雨夾雪是常態、速融也是常態特別是雪後再來波雨也是常態……前方高能預警①:無錫又要下波雨……預計17日夜裡到19日前期有一次降水天氣過程前方高能預警②:無錫早晨有冰凍明後天早晨氣溫將降至-1到-2℃添衣保暖又成了重頭戲前方高能預警③
  • 聊聊python 數據處理全家桶(Redis篇)
    yum install redis然後,通過 vim 命令修改 Redis 配置文件,打開遠程連接,設置連接密碼配置文件目錄:/etc/redis.confbind 更改為 0.0.0.0,容許外網訪問
  • Redis面試:八問字典內部構造與rehash,給我整懵了
    抽象,意味著它這是實現功能的標準,凡是能夠完成這些功能的都可以是其實現。redis的字典字典作為一種數據結構內置在很多高級程式語言裡面,但是redis是基於C語言進行開發的,所以沒有內置這種數據結構,redis只能構建自己的字典實現。字典通常可以由兩種底層數據結構組成,分別是線性表(數組)和hash表。
  • 高能預警!賽博朋克濟南版來襲!輕鬆Get「反差萌」!
    高能預警!賽博朋克濟南版來襲!輕鬆Get「反差萌」! 〰️「一邊是摩天大樓,一邊是貧民窟;一邊是光怪陸離的高科技,一邊是落後、混亂、骯髒的底層生活」,這是遊戲中「賽博朋克」的設定。高等科技+低端生活的組合,形成巨大的反差,成為獨具特色的「反差萌」,深受攝影愛好者的喜愛,成為當下爆火的「賽博朋克」攝影風格。
  • 買不買榮耀9看完這篇文章再說
    買不買榮耀9看完這篇文章再說 榮耀今天舉辦主題為「美得有聲有色」的新品發布會,正式了榮耀家族高顏值新機「榮耀9」,由胡歌代言。買不買榮耀9看完這篇文章再說榮耀9在外觀設計上首創了15層工藝3D曲面極光玻璃,金屬與玻璃圓潤過渡,流光弧線,玻璃機身在光線下折射出金屬光澤般的炫光,厚度僅7.45毫米。同時延續純平雙鏡頭設計,正面陶瓷指紋Home鍵,同時保留3.5mm耳機孔和紅外遙控功能,提供魅海藍、幻夜黑、琥珀金、海鷗灰四種配色。