Day148.Redis入門介紹、安裝、基本知識 -Redis

轉行一點成功發表於2020-12-30

Redis入門介紹

一、入門概述

1、是什麼

Redis:REmote DIctionary Server(遠端字典伺服器)

  • 是完全開源免費的,用C語言編寫的,遵守BSD協議,
  • 是一個高效能的(key/value)分散式記憶體資料庫,基於記憶體執行並支援持久化NoSQL資料庫,
  • 是當前最熱門的NoSql資料庫之一,也被人們稱為資料結構伺服器

Redis 與其他 key - value 快取產品有以下三個特點

1、支援資料的持久化

2、支援多種資料結果儲存

3、支援資料備份,master-slave模式

.

2、能幹嘛

  • 記憶體儲存和持久化:redis支援非同步將記憶體中的資料寫到硬碟上,同時不影響繼續服務

  • 取最新N個資料的操作,如:可以將最新的10條評論的ID放在Redis的List集合裡面

  • 模擬類似於HttpSession這種需要設定過期時間的功能

  • 釋出、訂閱訊息系統

  • 定時器、計數器

.

3、去哪下

  • Http://redis.io/

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-kMOujCk5-1609303153888)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229210641826.png)]

  • Http://www.redis.cn/

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-kvNTX35K-1609303153894)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229210649099.png)]

.

4、怎麼玩

  • 資料型別、基本操作和配置

  • 持久化和複製,RDB/AOF

  • 事務的控制(部分事務控制,更加靈活)

  • 複製

.

二、Redis的安裝

1、Windows版安裝

  • 下載地址:https://github.com/dmajkic/redis/downloads,根據自身情況,下載64或32位版本
  • 將64bit的內容cp到自定義碟符安裝目錄取名redis。
  • 如 C:\reids開啟一個cmd視窗 使用cd命令切換目錄到 C:\redis 執行 。
redis-server.exe redis.conf 
  • 如果想方便的話,可以把redis的路徑加到系統的環境變數裡,這樣就省得再輸路徑了,後面的那個redis.conf可以省略,
    如果省略,會啟用預設的。輸入之後,會顯示如下介面:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-whyAje6s-1609303153896)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229211002886.png)]

  • 這時候另啟一個cmd視窗,原來的不要關閉,不然就無法訪問服務端了。
  • 切換到redis目錄下執行 redis-cli.exe -h 127.0.0.1 -p 6379 。
  • 設定鍵值對 set myKey abc
    取出鍵值對 get myKey

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-vnuIAmTB-1609303153901)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229211007227.png)]

.

2、重要提示:

由於企業裡面做Redis開發,99%都是Linux版的運用和安裝,幾乎不會涉及到Windows版,

上一步的講解只是為了知識的完整性,Windows版不作為重點,同學可以下去自己玩,企業實戰就認一個版:Linux

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-Kc1rjc7h-1609303153904)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229211313496.png)]

.

3、Linux版安裝

1、下載安裝包

redis-5.0.7.tar.gz

2、解壓Redis的安裝包, 程式/opt

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-4eqpBheq-1609303153906)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229225415655.png)]

3、進入解壓後的檔案,可以按到redis的配置檔案

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-u3Agx4KE-1609303153907)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229225520017.png)]

4、基本的環境安裝

1、yum install gcc-c++

2、gcc -v 檢視版本 檢視是否安裝成功

3、make 下載環境

4、make install 檢視安裝是否完畢

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-3Hu2jnj2-1609303153908)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229225709047.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-q8Eij1Az-1609303153910)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229225952203.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-rIpInQVB-1609303153911)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229230049566.png)]

5、redis預設安裝路徑/usr/local/bin

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-N2sPJ06l-1609303153913)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229230315285.png)]

6、將redis配置檔案redis.conf,備份一份在 /myredis下(目錄隨意選擇)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-UrG6Ckyp-1609303153914)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229230738037.png)]

7、redis預設不是後臺啟動的,修改配置檔案

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-BZM4On3B-1609303153915)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229230934642.png)]

8、使用redis-server啟動redis服務

/usr/local/bin目錄下執行對應的檔案

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-G7ggik0m-1609303153917)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229231157366.png)]

9、使用redis-cli進行連線服務

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-78xHxZ1k-1609303153920)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229231336506.png)]

10、檢視redis程式是否開啟

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-WNTreh9q-1609303153922)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229231506259.png)]

11、關閉redis服務

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-0awWV10y-1609303153923)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229231558590.png)]

12、再次檢視程式是否存在

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-A5FFksya-1609303153925)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201229231617060.png)]

13、後面會使用單擊多Redis啟動

.

4、測試效能

  • 前提保證redis服務是執行的

redis-benchmark是一個壓力測試工具

官方自帶的效能測試工具

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-tU1YLoyc-1609303153926)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201230110800247.png)]

使用語法:

redis-benchmark -命令引數

命令引數:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-MHfoDdvT-1609303153928)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201230111114640.png)]

測試:

#測試:100個併發連線		100000請求
redis-benchmark -h localhost -p 6379 -c 100 -n 1100000

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-nvGDff3b-1609303153930)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201230120056574.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-WQFiZJIy-1609303153931)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201230120340247.png)]

.

三、基礎知識

1、基礎指令

keys * #檢視所有key
dbsize #檢視當前資料庫大小
flushdb #清空當前資料庫資料
flushall #清空所有資料庫資料

redis預設有16個資料庫:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-jDTke8g7-1609303153933)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201230120707408.png)]

預設使用的是第0個

可以使用select進行切換資料庫

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-CXWkgz9n-1609303153934)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201230120904396.png)]

redis資料庫之前的資料是不一樣的:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-Xs4plCyZ-1609303153936)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201230121132473.png)]

keys *檢視所有key:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-wTcCAJZZ-1609303153937)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201230121247604.png)]

flushdb清空當前資料庫:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-iGphaIG2-1609303153939)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201230121418264.png)]

flushall清空所有資料庫:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-zo68f6h6-1609303153940)(C:\Users\PePe\AppData\Roaming\Typora\typora-user-images\image-20201230121629901.png)]

思考:為什麼redis是6379(瞭解)

.

2、Redis是單執行緒的

Redis6.0以上使用了多執行緒

  • 要明白Redi很快

  • 官方表示:Redis是基於記憶體操作的,CPU不是Redis的效能瓶頸,Redis的瓶頸是根據機器的記憶體和網路頻寬,既然可以使用單執行緒來實現,就使用單執行緒了

Redis是C語言寫的,官方提供的資料為 100000+的QPS,完全不比同樣使用K-V的Memcache差

Redis為什麼單執行緒還這麼快?

誤區1:高效能的伺服器一定都是多執行緒的

多執行緒是為了減少主執行緒的阻塞時間

誤區2:多執行緒一定比單執行緒效率高

redis將所有的資料放進記憶體中的,所有使用單執行緒操作效率是最高的不用考慮IO複用,CPU上下文切換消耗資源時間

redis QPS 高,用多執行緒的話,產生的CPU切換消耗反而損耗效能,java鎖就是能不切換執行緒,就不切多執行緒了

感謝狂神!!!
https://www.bilibili.com/video/BV1S54y1R7SB?p=12

相關文章