1.Redis是什么
1)REmote DIctionary Server(Redis) 是一個由Salvatore Sanfilippo寫的key-value存盤系統,
2)Redis的特點
Redis 是完全開源的,遵守 BSD 協議,是一個高性能的 key-value 資料庫,
Redis 與其他 key - value 快取產品有以下三個特點:
- Redis支持資料的持久化,可以將記憶體中的資料保存在磁盤中,重啟的時候可以再次加載進行使用,
- Redis不僅僅支持簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的存盤,
- Redis支持資料的備份,即master-slave模式的資料備份,
3)Redis的優勢
- 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s ,
- 豐富的資料型別 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作,
- 原子 – Redis的所有操作都是原子性的,意思就是要么成功執行要么失敗完全不執行,單個操作是原子性的,多個操作也支持事務,即原子性,通過MULTI和EXEC指令包起來,
- 豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性,
4)Redis與其他key-valye存盤有什么不同
- Redis有著更為復雜的資料結構并且提供對他們的原子性操作,這是一個不同于其他資料庫的進化路徑,Redis的資料型別都是基于基本資料結構的同時對程式員透明,無需進行額外的抽象,
- Redis運行在記憶體中但是可以持久化到磁盤,所以在對不同資料集進行高速讀寫時需要權衡記憶體,因為資料量不能大于硬體記憶體,在記憶體資料庫方面的另一個優點是,相比在磁盤上相同的復雜的資料結構,在記憶體中操作起來非常簡單,這樣Redis可以做很多內部復雜性很強的事情,同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,因為他們并不需要進行隨機訪問,
(以上內容摘自菜鳥教程)
2.Redis在Window10系統的安裝
1)Redis的下載,網址:https://github.com/tporadowski/redis/releases
(1)點擊圖中紅框內容下載Redis包(寫文時間是2020.11.13,下載的Redis包是5.0.10版本),Redis有64和32版本,根據自己電腦情況選擇

(2)下載以后解壓縮到C盤,然后更改檔案夾的名字為redis,打開檔案夾以后,檔案內容如下:

(3)打開一個cmd視窗,使用 cd 命令切換目錄到 C:\redis 運行此命令:redis-server.exe redis.windows.conf
如果想方便的話,可以把 redis 的路徑加到系統的環境變數里,這樣就省得再輸路徑了,后面的那個 redis.windows.conf 可以省略,如果省略,會啟用默認的,輸入之后,會顯示如下界面:

(4)打開另一個cmd視窗,不要關閉上一個,關閉以后會關閉服務的,
還是在cmd中用cd C:/redis命令進入目錄,然后運行此命令:
redis-cli.exe -h 127.0.0.1 -p 6379
設定鍵值對:
set myKey abc
取出鍵值對:
get myKey
效果如下圖:

這樣就安裝好了,
(5)多說幾句:以后如果想使用Redis,需要再次打開此視窗,不然不能用,(也就是使用第(3)步)

也可以把Redis添加到服務中,開機啟動,這樣就不用每次開機就打開了,之前寫過一個帖子,如果想把redis放到服務中,請移步:
https://www.cnblogs.com/littletreeshang/p/10772988.html
帖子內容如下:

3.Redis配置
(1)獲取配置
Redis的組態檔在Redis目錄里面,在我這里就是C:/Redis目錄下,Redis的組態檔叫 redis.windows.conf,
查看配置也可以通過命令查看,語法格式如下:
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
例子:
redis 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel" 2) "notice"
如圖:

如果想獲取所有配置,使用*:
redis 127.0.0.1:6379> CONFIG GET *
獲取所有配置結果如圖:




(2)編輯配置
編輯配置有兩種方式
1)直接修改組態檔:redis.windows.conf;
2)通過命令修改配置,
通過命令修改語法:
redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
例子:
redis 127.0.0.1:6379> CONFIG SET loglevel "notice" OK redis 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel" 2) "notice"
如圖:

(3)組態檔說明(以當前版本(5.0.10)為例如果要是不確定的或者沒查到的說明前面加*,如果命令后面帶:就是后面的值不能以空格隔開)
說明:這里就先整理一下常用的,其他的等熟悉以后再補充,在找命令的時候發現一個比較厲害的博客,他那里的Redis配置詳解系列講解的特別特別好,而且非常的詳細,請大家移步http://www.cs-cjl.com/
1)dbfilename dump.rdb
鏡像備份檔案的檔案名,默認為 dump.rdb
2) requirepass foobared
設定客戶端連接后進行任何其他指定前需要使用的密碼,警告:因為redis 速度相當快,所以在一臺比較好的服務器下,一個外部的用戶可以在一秒鐘進行150K 次的密碼嘗試,這意味著你需要指定非常非常強大的密碼來防止暴力破解,
3)masterauth
當主資料庫連接需要密碼驗證時,在這里指定
4)cluster-announce-ip
*沒有查到具體的用法,但是好像是搭建Redis集群的時候的對外IP
5)unixsocket
*redis支持通過unix socket方式來接收請求,可以通過unixsocket配置項來指定unix socket檔案的路徑,并通過unixsocketperm來指定檔案的權限
6)logfile
配置log 檔案地址,默認使用標準輸出,即列印在命令列終端的視窗上,修改為日志檔案目錄,
日志記錄方式,默認為標準輸出,如果配置 Redis 為守護行程方式運行,而這里又配置為日志記錄方式為標準輸出,則日志將會發送給 /dev/null
7)pidfile
當 Redis 以守護行程方式運行時,Redis 默認會把 pid 寫入 /var/run/redis.pid 檔案,可以通過 pidfile 指定,你可以配置到其他地址,當運行多個redis 服務時,需要指定不同的pid 檔案和埠
8)slave-announce-ip
9)replica-announce-ip
10)maxmemory 0
指定 Redis 最大記憶體限制,Redis 在啟動時會把資料加載到記憶體中,達到最大記憶體后,Redis 會先嘗試清除已到期或即將到期的 Key,當此方法處理 后,仍然到達最大記憶體設定,將無法再進行寫入操作,但仍然可以進行讀取操作,Redis 新的 vm 機制,會把 Key 存放記憶體,Value 會存放在 swap 區
11)proto-max-bulk-len 536870912
12)client-query-buffer-limit 1073741824
13)maxmemory-samples 5
14)lfu-log-factor 10
Redis LFU 回收策略,
15)lfu-decay-time 1
16)timeout 0
當客戶端閑置多長秒后關閉連接,如果指定為 0 ,表示關閉該功能,
17)active-defrag-threshold-lower 10
18)active-defrag-threshold-upper 100
19)active-defrag-ignore-bytes 104857600
20)active-defrag-cycle-min 5
21)active-defrag-cycle-max 75
22)active-defrag-max-scan-fields 1000
23)auto-aof-rewrite-percentage 100
24)auto-aof-rewrite-min-size 67108864
25)hash-max-ziplist-entries 512
26)hash-max-ziplist-value 64
27)stream-node-max-bytes 4096
28)stream-node-max-entries 100
29)list-max-ziplist-size -2
30)list-compress-depth 0
31)set-max-intset-entries 512
32)zset-max-ziplist-entries 128
33)zset-max-ziplist-value 64
34)hll-sparse-max-bytes 3000
35)lua-time-limit 5000
36)slowlog-log-slower-than 10000
37)latency-monitor-threshold 0
38)slowlog-max-len 128
39)port 6379
40)cluster-announce-port 0
41)cluster-announce-bus-port 0
42)tcp-backlog 511
43)databases 16
設定資料庫的數量,默認資料庫為0,可以使用SELECT 命令在連接上指定資料庫id,
44)repl-ping-slave-period 10
45)repl-ping-replica-period 10
46)repl-timeout 60
47)repl-backlog-size 1048576
48)repl-backlog-ttl 3600
49)maxclients 10000
指定 Redis 最大記憶體限制,Redis 在啟動時會把資料加載到記憶體中,達到最大記憶體后,Redis 會先嘗試清除已到期或即將到期的 Key,當此方法處理 后,仍然到達最大記憶體設定,將無法再進行寫入操作,但仍然可以進行讀取操作,Redis 新的 vm 機制,會把 Key 存放記憶體,Value 會存放在 swap 區
50)watchdog-period 0
51)slave-priority 100
52)replica-priority 100
53)slave-announce-port 0
見8)
54)replica-announce-port 0
見9)
55)min-slaves-to-write 0
56)min-replicas-to-write 0
57)min-slaves-max-lag 10
58)min-replicas-max-lag 10
59)hz 10
60)cluster-node-timeout 15000
61)cluster-migration-barrier 1
62)cluster-slave-validity-factor 10
63)cluster-replica-validity-factor 10
64)repl-diskless-sync-delay 5
65)tcp-keepalive 0
66)cluster-require-full-coverage yes
67)cluster-slave-no-failover no
68)cluster-replica-no-failover no
69)no-appendfsync-on-rewrite no
70)slave-serve-stale-data yes
71)replica-serve-stale-data yes
72)slave-read-only yes
73)replica-read-only yes
74)slave-ignore-maxmemory yes
75)replica-ignore-maxmemory yes
76)stop-writes-on-bgsave-error yes
77)daemonize no
78)rdbcompression yes
指定存盤至本地資料庫時是否壓縮資料,默認為 yes,Redis 采用 LZF 壓縮,如果為了節省 CPU 時間,可以關閉該選項,但會導致資料庫檔案變的巨大,
79)rdbchecksum yes
80)activerehashing yes
指定是否激活重置哈希,默認為開啟,
81)activedefrag no
是否啟用碎片整理,
82)protected-mode yes
83)repl-disable-tcp-nodelay no
84)repl-diskless-sync no
85)aof-rewrite-incremental-fsync yes
86)rdb-save-incremental-fsync yes
87)aof-load-truncated yes
88)aof-use-rdb-preamble yes
89)lazyfree-lazy-eviction no
90)lazyfree-lazy-expire no
91)lazyfree-lazy-server-del no
92)slave-lazy-flush no
93)replica-lazy-flush no
94)dynamic-hz yes
95)maxmemory-policy noeviction
當記憶體使用值到達 maxmemory 時使用的洗掉策略,默認值為 noeviction,
注意:在記憶體到達限值,并且沒有合適的鍵被洗掉的情況下,無論選擇的是什么過期策略,Redis 都會回傳出錯,
96)loglevel notice
指定日志記錄級別,Redis 總共支持四個級別:debug、verbose、notice、warning,默認為 notice
97)supervised no
98)appendfsync everysec
指定更新日志條件,共有 3 個可選值:
- no:表示等作業系統進行資料快取同步到磁盤(快)
- always:表示每次更新操作后手動呼叫 fsync() 將資料寫到磁盤(慢,安全)
- everysec:表示每秒同步一次(折中,默認值)
99)appendonly no
指定是否在每次更新操作后進行日志記錄,Redis 在默認情況下是異步的把資料寫入磁盤,如果不開啟,可能會在斷電時導致一段時間內的資料丟失,因為 redis 本身同步資料檔案是按上面 save 條件來同步的,所以有的資料會在一段時間內只存在于記憶體中,默認為 no
100)dir C:\\redis
指定本地資料庫存放目錄
101)save: 900 1 300 10 60 10000
指定在多長時間內,有多少次更新操作,就將資料同步到資料檔案,可以多個條件配合,
Redis 默認組態檔中提供了三個條件:
save 900 1
save 300 10
save 60 10000
分別表示 900 秒(15 分鐘)內有 1 個更改,300 秒(5 分鐘)內有 10 個更改以及 60 秒內有 10000 個更改,
105)client-output-buffer-limit: normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60
103)unixsocketperm 0
104)slaveof <masterip> <masterport>
設定當本機為 slave 服務時,設定 master 服務的 IP 地址及埠,在 Redis 啟動時,它會自動從 master 進行資料同步
105)notify-keyspace-events
106)bind 127.0.0.1
系結的主機地址
大概就是這樣了,如果有什么錯誤或者建議,希望大家從評論區指出,大家一起學習一起進步~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/213797.html
標籤:其他
下一篇:MySQL-8.0.20
