前言
redis是當(dāng)前比較熱門的NOSQL系統(tǒng)之一,它是一個key-value存儲系統(tǒng)。和Memcached類似,但很大程度補(bǔ)償了 memcached的不足,它支持存儲的value類型相對更多,包括string、list、set、zset和hash。這些數(shù)據(jù)類型都支持 push/pop、add/remove及取交集并集和差集及更豐富的操作。在此基礎(chǔ)上,redis支持各種不同方式的排序。Redis數(shù)據(jù)都是緩存在計算機(jī)內(nèi)存中,并且會周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件。
最近在遷移測試環(huán)境,有用到Redis,記錄下linux安裝單機(jī)版Redis的過程,下面話不多說了,來一起看看詳細(xì)的介紹吧
驗證gcc-c++環(huán)境
redis使用c語言開發(fā),所以要運(yùn)行在linux上,需要gcc-c++的環(huán)境。
檢查是否有g(shù)cc-c++環(huán)境:
1
|
rpm -qa | grep gcc-c++ |
如果沒有進(jìn)行安裝:
1
|
yum install gcc-c++ |
1
|
yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl |
安裝Redis
首先下載安裝包:
1
|
wget http: //download .redis.io /releases/redis-4 .0.10. tar .gz |
然后解壓至指定目錄:
1
|
tar -zxvf redis-4.0.10. tar .gz -C /usr/local/ |
進(jìn)入到解壓后的目錄之后進(jìn)行編譯:
1
2
|
cd /usr/local/redis-4 .0.10 make |
編譯成功后進(jìn)行安裝,設(shè)置安裝路徑:
1
|
make install PREFIX= /usr/local/redis |
安裝完成后就可以到對應(yīng)的目錄下啟動:
1
2
|
cd /usr/local/redis/bin . /redis-server |
順利的話,redis已經(jīng)正常啟動,但是在終端會顯示啟動內(nèi)容,如果不希望顯示的話,可以修改下配置。
首先去copy安裝包中的redis.conf
1
|
cp /root/redis-4 .0.10 /redis .conf /usr/local/redis |
然后打開配置文件,將文件中的daemonize設(shè)置為yes。
vi redis.conf之后進(jìn)行編輯,如下截圖:
然后帶著配置項啟動即可:
1
|
. /redis-server redis.conf |
驗證與操作
redis安裝完之后,我們校驗下是否正常。
首先我們啟動測試端:./redis-cli,然后進(jìn)行一些簡單的操作,如下截圖:
配置說明
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
##基本配置 daemonize no // 是否以后臺進(jìn)程啟動 databases 16 // 創(chuàng)建database的數(shù)量(默認(rèn)選中的是database 0) save 900 1 #刷新快照到硬盤中,必須滿足兩者要求才會觸發(fā),即900秒之后至少1個關(guān)鍵字發(fā)生變化。 save 300 10 #必須是300秒之后至少10個關(guān)鍵字發(fā)生變化。 save 60 10000 #必須是60秒之后至少10000個關(guān)鍵字發(fā)生變化。 stop-writes-on-bgsave-error yes #后臺存儲錯誤停止寫。 rdbcompression yes #使用LZF壓縮rdb文件。 rdbchecksum yes #存儲和加載rdb文件時校驗。 dbfilename dump.rdb #設(shè)置rdb文件名。 dir ./ #設(shè)置工作目錄,rdb文件會寫入該目錄。 // 主從配置 slaveof <masterip> <masterport> // 設(shè)為某臺機(jī)器的從服務(wù)器 masterauth <master-password> // 連接主服務(wù)器的密碼 slave-serve-stale-data yes # 當(dāng)主從斷開或正在復(fù)制中,從服務(wù)器是否應(yīng)答 slave- read -only yes #從服務(wù)器只讀 repl- ping -slave-period 10 #從ping主的時間間隔,秒為單位 repl-timeout 60 #主從超時時間(超時認(rèn)為斷線了),要比period大 slave-priority 100 #如果master不能再正常工作,那么會在多個slave中,選擇優(yōu)先值最小的一個slave提升為master,優(yōu)先值為0表示不能提升為master。 repl-disable-tcp-nodelay no #主端是否合并數(shù)據(jù),大塊發(fā)送給slave slave-priority 100 // 從服務(wù)器的優(yōu)先級,當(dāng)主服掛了,會自動挑slave priority最小的為主服 #安全 requirepass foobared # 需要密碼 rename- command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 #如果公共環(huán)境,可以重命名部分敏感命令 如config #限制 maxclients 10000 #最大連接數(shù) maxmemory <bytes> #最大使用內(nèi)存 maxmemory-policy volatile-lru #內(nèi)存到極限后的處理 volatile-lru -> #LRU算法刪除過期key allkeys-lru -> #LRU算法刪除key(不區(qū)分過不過期) volatile-random -> #隨機(jī)刪除過期key allkeys-random -> #隨機(jī)刪除key(不區(qū)分過不過期) volatile-ttl -> #刪除快過期的key noeviction -> #不刪除,返回錯誤信息 #解釋 LRU ttl都是近似算法,可以選N個,再比較最適宜T踢出的數(shù)據(jù) maxmemory-samples 3 #日志模式 appendonly no #是否僅要日志 appendfsync no # 系統(tǒng)緩沖,統(tǒng)一寫,速度快 appendfsync always # 系統(tǒng)不緩沖,直接寫,慢,丟失數(shù)據(jù)少 appendfsync everysec #折衷,每秒寫1次 no-appendfsync-on-rewrite no #為yes,則其他線程的數(shù)據(jù)放內(nèi)存里,合并寫入(速度快,容易丟失的多) auto-AOF-rewrite-percentage 100 #當(dāng)前aof文件是上次重寫是大N%時重寫 auto-AOF-rewrite-min-size 64mb #aof重寫至少要達(dá)到的大小 #慢查詢 slowlog-log-slower-than 10000 #記錄響應(yīng)時間大于10000微秒的慢查詢 slowlog-max-len 128 # 最多記錄128條 #服務(wù)端命令 time #返回時間戳+微秒 dbsize #返回key的數(shù)量 bgrewriteaof #重寫aof bgsave #后臺開啟子進(jìn)程dump數(shù)據(jù) save #阻塞進(jìn)程dump數(shù)據(jù) slaveof host port #做host port的從服務(wù)器(數(shù)據(jù)清空,復(fù)制新主內(nèi)容) slaveof no one #變成主服務(wù)器(原數(shù)據(jù)不丟失,一般用于主服失敗后) flushdb #清空當(dāng)前數(shù)據(jù)庫的所有數(shù)據(jù) flushall #清空所有數(shù)據(jù)庫的所有數(shù)據(jù)(誤用了怎么辦?) shutdown [save /nosave ] #關(guān)閉服務(wù)器,保存數(shù)據(jù),修改AOF(如果設(shè)置) slowlog get #獲取慢查詢?nèi)罩?/code> slowlog len #獲取慢查詢?nèi)罩緱l數(shù) slowlog reset #清空慢查詢 config get #選項(支持*通配) config set #選項 值 config rewrite #把值寫到配置文件 config restart #更新info命令的信息 debug object key #調(diào)試選項,看一個key的情況 debug segfault #模擬段錯誤,讓服務(wù)器崩潰 object key (refcount|encoding|idletime) monitor #打開控制臺,觀察命令(調(diào)試用) client list #列出所有連接 client kill #殺死某個連接 CLIENT KILL 127.0.0.1:43501 client getname #獲取連接的名稱 默認(rèn)nil client setname "名稱" #設(shè)置連接名稱,便于調(diào)試 #連接命令 auth 密碼 #密碼登陸(如果有密碼) ping #測試服務(wù)器是否可用 echo "some content" #測試服務(wù)器是否正常交互 select 0 /1/2 ... #選擇數(shù)據(jù)庫 quit #退出連接 |
總結(jié)
搭建redis還是比較簡單的,有興趣的小伙伴可以親自試驗下,下次再嘗試下搭個redis集群。
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對服務(wù)器之家的支持。
原文鏈接:https://www.bug2048.com/redis20180823/