day01-Redis入門

一刀一個小西瓜發表於2023-04-15

Redis入門

1.初始Redis

1.1認識NoSQL

SQL(關係型資料庫) NoSQL(非關係型資料庫)
資料結構 結構化(Structured) 非結構化
資料關聯 關聯的(Relational) 無關聯的
查詢方式 SQL查詢 非SQL
事務特性 ACID BASE
儲存方式 磁碟 記憶體
擴充套件性 垂直 水平
使用場景 1.資料結構固定 2.相關業務對資料安全性、一致性要求較高 1.資料結構不固定 2.對一致性、安全性要求不高 3.對效能要求高

其中,非關係型資料庫有很多種,比如:

  1. 鍵值型別(Redis)
  2. 文件型別(MongoDB)
  3. 列型別(HBase)
  4. Graph型別(Neo4j)

1.2認識Redis

Redis誕生於2009年,全稱為 Remote Dictionary Server(遠端詞典伺服器),是一個基於記憶體的鍵值型NoSQL資料庫。

Redis特徵:

  1. 鍵值(key-value)型,value支援多種不同的資料結構,功能豐富
  2. 單執行緒,每個命令具備原子性
  3. 低延遲,速度快(基於記憶體、IO多路複用、良好的編碼)
  4. 支援資料持久化
  5. 支援主從叢集、分片叢集(主從叢集:從節點可以去備份主節點的資料;分片叢集:資料的拆分,一份資料可以拆成多分,分別儲存在不同的節點上)
  6. 支援多語言客戶端

2.安裝Redis

2.1單機安裝redis

大多數企業都是基於Linux伺服器來部署專案,而且Redis官方也沒有提供Windows版本的安裝包,因此我們這裡基於Linux系統來安裝Redis。

先安裝linux系統:這裡是在wsl上安裝redis,wsl安裝教程更換國內下載源

ubuntu安裝redis教程:Ubuntu安裝redis詳細教程

(1) 安裝 Redis 伺服器

sudo apt-get install -y redis-server

(2)在 /etc/redis/redis.conf 中修改redis密碼,修改配置檔案裡的 requirepass,把註釋關掉,然後後面改為你想設定的密碼

sudo vim /etc/redis/redis.conf	#注意使用sudo
image-20230415203237230

(3) 啟動 Redis 伺服器:使用命令redis-server 啟動redis伺服器

image-20230415202336846

(4) 驗證 Redis 是否正常工作:

新建一個視窗當做redis客戶端,用於通訊。在客戶端輸入命令:redis-cli,這會開啟一個redis提示符:127.0.0.1:6379>。其中,127.0.0.1 是機器的 IP 地址,6379 是 Redis 伺服器執行的埠。鍵入PING 命令,若返回 PONG 則表示 Redis 已成功安裝在你的系統上。

image-20230415202814771

注意事項:

redis-cli 是redis提供的命令列客戶端

redis-server 是redis的服務端啟動指令碼

redis-sentinel 是redis的哨兵啟動指令碼

2.2redis服務-後臺啟動

如上所示,我們直接輸入命令redis-server,redis伺服器將會在前臺啟動(預設啟動方式),這樣會阻塞整個會話視窗,視窗按下ctrl+c則redis服務停止,不推薦使用。

如果要讓redis以後臺方式啟動,則必須修改redis的配置檔案。

(1)先將該檔案備份:

li@LAPTOP-32SOPQVL:/etc/redis$ sudo cp redis.conf redis.cinf.bck
li@LAPTOP-32SOPQVL:/etc/redis$ ls
redis.cinf.bck  redis.conf

(2)再修改配置檔案, sudo vim /etc/redis/redis.conf,修改的部分配置如下

# 允許訪問的地址,預設是127.0.0.1,會導致只能在本地訪問。
# 修改為0.0.0.0則可以在任意IP訪問,注意:生產環境不要設定為0.0.0.0 !!
bind 0.0.0.0
# 守護程式,修改為yes後即可後臺執行
daemonize yes 
# 密碼,設定後訪問Redis必須輸入密碼
requirepass 123456

(3)修改之後,輸入命令 sudo redis-server /etc/redis/redis.conf,就可以在後臺執行redis服務端了

li@LAPTOP-32SOPQVL:/$ sudo redis-server /etc/redis/redis.conf
li@LAPTOP-32SOPQVL:/$ ps -ef | grep redis #檢視埠
root     22196     1  0 21:09 ?        00:00:00 redis-server 0.0.0.0:6379
li       22201  4351  0 21:09 tty2     00:00:00 grep --color=auto redis

(4)後臺啟動服務端後,因為修改了密碼,客戶端訪問時需要輸入密碼

Redis報錯 : (error) NOAUTH Authentication required (cnblogs.com)

li@LAPTOP-32SOPQVL:~$ redis-cli
127.0.0.1:6379> auth 123456 # 輸入密碼
OK
127.0.0.1:6379> ping
PONG
  • Redis的其它常見配置:
# 監聽的埠
port 6379
# 工作目錄,預設是當前目錄 . ,也就是執行redis-server時的命令,日誌、持久化等檔案會儲存在這個目錄
dir .
# 資料庫數量,設定為1,代表只使用1個庫,預設有16個庫,編號0~15
databases 1
# 設定redis能夠使用的最大記憶體
maxmemory 512mb
# 日誌檔案,預設為空,不記錄日誌,可以指定日誌檔名
logfile "redis.log"

啟動Redis:

# 進入redis安裝目錄 
cd /usr/local/src/redis-6.2.6
# 啟動,需要管理員許可權
redis-server /etc/redis/redis.conf

停止服務:

# 利用redis-cli來執行 shutdown 命令,即可停止 Redis 服務,
# 因為之前配置了密碼,因此需要透過 -u 來指定密碼
redis-cli -u 123456 shutdown

3.Redis客戶端

安裝完成Redis,我們就可以操作Redis,實現資料的CRUD了。這裡需要用到redis的客戶端,包括:

  • 命令列客戶端
  • 圖形化桌面客戶端
  • 程式設計客戶端

3.1命令列客戶端

Redis安裝完成後就自帶了命令列客戶端,在上面已經使用過,開啟新視窗,使用方式如下:

redis-cli [options] [commonds]

常見的options有:

  • -h 127.0.0.1:指定要連線的redis節點的IP地址,預設是127.0.0.1
  • -p 6379:指定要連線的redis節點的埠,預設是6379
  • -a 123456:指定redis的訪問密碼

commonds是Redis的操作命令,例如:

  • ping:與redis服務端做心跳測試,服務端正常會返回pong

不指定commond時,會直接進入redis-cli的互動控制檯:

image-20230415220315186

3.2圖形化桌面客戶端

RedisInsight/RedisDesktopManager: Cross-platform Developer GUI for Redis (github.com)

下載後直接執行.exe檔案,一路點選下一步,選擇對應的安裝目錄,完成安裝。