Redis入門:Linux基礎安裝
要安裝Redis需要準備以下基本的環境。
1 準備工作
本次安裝是在Unix類操作系統安裝。
1.1 安裝環境
Unix類操作系統,可以使用Linux、CentOS等。
此處選擇使用CentOS7。
系統中必須提前安裝gcc,安裝命令如下:
yum install gcc
1.2 關閉防火牆
CentOS 7的防火牆臨時命令如下:
#查看狀態
systemctl status firewalld.service
#啓動防火牆
systemctl start firewalld.service
#重啓防火牆
systemctl restart firewalld.service
#臨時關閉防火牆
systemctl stop firewalld.service
#禁止防火牆開機自啓
systemctl disable firewalld.service
#下面一組操作防火牆的命令也支持:
service firewalld status
service firewalld start
service firewalld restart
service firewalld stop
1.3 創建目錄
在規劃的目錄中創建保存軟件的目錄。此處的目錄規劃的爲/home/software/
mkdir –p /home/software
cd /home/software
1.4 下載Redis
下載Redis的網址:https://redis.io/download
現在官網提供的最新的穩定版本爲6.2.6版本。可以直接在官網下載。下載完成之後,上傳到上一步規劃的目錄中。
另外可以直接在上一步創建的目錄中,使用wget進行下載,命令如下:
#下載指定版本:
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
#下載最新版本
wget http://download.redis.io/redis-stable.tar.gz
pwd
/home/software
ls
redis-6.2.6.tar.gz
1.5 解壓安裝包
解壓命令如下:
tar –zxvf redis-6.2.6.tar.gz
ls
redis-6.2.6
redis-6.2.6.tar.gz
2 編譯安裝
以上的準備工作,做完之後,下面要進行的就是編譯安裝了,因爲不管是那種下載方式,下載的都是Redis的源碼,Redis是用C語言編寫的,這也是爲什麼在安裝Redis之前需要準備gcc的原因。
下面是安裝的命令:
cd redis-6.2.6
#編譯安裝命令
make
早期的版本使用的安裝命令如下:
make && make install
2.1 命令未找到錯誤
如果沒有安裝gcc會報找不到一系列命令的錯誤,例如:
make[2]: 進入目錄“/home/software/redis/deps/hiredis”
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -Wno-missing-field-initializers -g -ggdb alloc.c
make[2]: cc:命令未找到
make[2]: *** [alloc.o] 錯誤 127
make[2]: 離開目錄“/home/software/redis/deps/hiredis”
make[1]: *** [hiredis] 錯誤 2
make[1]: 離開目錄“/home/software/redis/deps”
make: [persist-settings] 錯誤 2 (忽略)
CC adlist.o
/bin/sh: cc: 未找到命令
make: *** [adlist.o] 錯誤 127
[root@lk7 src]# make && make install
CC Makefile.dep
CC adlist.o
/bin/sh: cc: 未找到命令
make: *** [adlist.o] 錯誤 127
[root@lk7 src]# cd ..
[root@lk7 redis]# make
cd src && make all
make[1]: 進入目錄“/home/software/redis/src”
CC adlist.o
/bin/sh: cc: 未找到命令
make[1]: *** [adlist.o] 錯誤 127
make[1]: 離開目錄“/home/software/redis/src”
make: *** [all] 錯誤 2
[root@lk7 redis]# ls
00-RELEASENOTES BUGS CONDUCT CONTRIBUTING COPYING deps INSTALL Makefile MANIFESTO README.md redis.conf runtest runtest-cluster runtest-moduleapi runtest-sentinel sentinel.conf src tests TLS.md utils
[root@lk7 redis]# cd ,,
-bash: cd: ,,: 沒有那個文件或目錄
遇到這個錯誤,將剛解壓的目錄刪掉,然後進行gcc安裝,然後重新解壓一份,再進行安裝。
3 使用服務
3.1 相關命令
以下命令位於Redis目錄中的src目錄中。
- redis-server:是Redis服務器本身,用於啓動redis服務。
- redis-sentinel:Redis Sentinel 可執行文件(監控和故障轉移)。
- redis-cli:Redis的客戶端。
- redis-benchmark:用於檢查Redis性能。
- redis-check-aof和redis-check-rdb(3.0 及以下版本中的redis-check-dump)在數據文件損壞的罕見事件中非常有用。
3.2 目錄安排
Redis的這些命令,可以從程序中單獨拷貝出來,放入系統已經配置好環境變量的目錄中,這樣方便使用。
通常將命令移動到/usr/local/bin目錄中:
cp redis-server /usr/local/bin/
cp redis-cli /usr/local/bin/
cp redis-sentinel /usr/local/bin/
cp redis-check-aof /usr/local/bin/
cp redis-check-rdb /usr/local/bin/
cp redis-benchmark /usr/local/bin/
通過此步操作,在任何目錄都可以直接使用這些命令了。
3.3 啓動服務
啓動服務的命令如下:
redis-server
啓動服務的過程如下:
[root@lk7 ~]# redis-server
127399:C 02 Jan 2022 14:13:56.412 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
127399:C 02 Jan 2022 14:13:56.412 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=127399, just started
127399:C 02 Jan 2022 14:13:56.412 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
127399:M 02 Jan 2022 14:13:56.413 * Increased maximum number of open files to 10032 (it was originally set to 1024).
127399:M 02 Jan 2022 14:13:56.413 * monotonic clock: POSIX clock_gettime
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 6.2.6 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 127399
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | https://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
127399:M 02 Jan 2022 14:13:56.413 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
127399:M 02 Jan 2022 14:13:56.413 # Server initialized
127399:M 02 Jan 2022 14:13:56.413 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
127399:M 02 Jan 2022 14:13:56.413 * Ready to accept connections
啓動之後可以看到這幾個信息:
- Running in standalone mode(運行在單機模式)
- Port:6379(服務使用的端口)
- PID:127399(當前服務的進程ID)
當前的啓動方式會一直佔用當前連接的輸入。所以可以使用以下啓動方式,將進程轉入後臺:
redis-server &
此方式啓動之後,再點擊回車鍵,則出現輸入提示符,即可正常輸入其他命令。
3.4 檢查服務
檢查服務是否正常工作,有以下幾個手段:
使用客戶端進行連接測試:
redis-cli ping
PONG
回覆PONG表示成功。
還可以使用如下方式:
[root@lk7 redis-6.2.6]# redis-cli
127.0.0.1:6379> ping
PONG
也可以使用檢查進程的方式,對當前服務進行檢查:
[root@lk7 redis-6.2.6]# ps -ef | grep redis
root 27259 125266 0 14:40 pts/1 00:00:00 grep --color=auto redis
root 127399 125434 0 14:13 pts/2 00:00:01 redis-server *:6379
- redis-server:表示redis服務。
- *:表示所有IP地址都可以訪問當前redis服務。如果列出的是一系列ip地址,那麼就只有這些列出的IP地址可以訪問redis服,除此之外的其他IP地址的請求都會被拒絕。
3.5 停止服務
停止Redis服務,有兩種方式:
佔用控制檯的Redis服務,直接使用Ctrl+C的方式停止即可。
不佔用控制檯的Redis服務,需要登錄客戶端執行停止命令進行停止,操作如下:
[root@lk7 ~]# redis-cli
127.0.0.1:6379> shutdown
33782:M 02 Jan 2022 14:46:21.025 # User requested shutdown...
33782:M 02 Jan 2022 14:46:21.025 * Saving the final RDB snapshot before exiting.
33782:M 02 Jan 2022 14:46:21.026 * DB saved on disk
33782:M 02 Jan 2022 14:46:21.026 # Redis is now ready to exit, bye bye...
not connected> exit
[1]+ 完成 redis-server
[root@lk7 ~]# ps -ef | grep redis
root 34866 125434 0 14:46 pts/2 00:00:00 grep --color=auto redis
[root@lk7 ~]#
此種方式進行服務停止比較友好,它會將redis中的數據進行持久化。
3.6 設置密碼
Redis有兩種設置密碼的方式,一種是永久密碼,一種是臨時密碼。
設置密碼一般是爲了保證安全,以及使用遠程登錄。
3.6.1 永久密碼
永久密碼是通過配置文件進行設置的,具體操作如下:
編輯配置文件redis.conf文件,第901行,將設置密碼的選項打開,如下:
899 # command, these will cause requirepass to be ignored.
900 #
901 # requirepass foobared
902 requirepass 123
設置完退出保存。
啓動的時候要使用配置文件進行啓動,此密碼才能生效,啓動方式如下:
src/redis-server redis.conf &
在啓動命令後加上配置文件,命令中注意路徑。
3.6.2 臨時密碼
臨時密碼是通過命令設置的,只在本次服務器運行的時候生效,一旦服務重啓該密碼就失效了。
設置密碼的命令如下:
config set requirepass keyword
操作步驟如下:
[root@lk7 redis-6.2.6]# redis-cli
127.0.0.1:6379> config set requirepass 123
OK
127.0.0.1:6379> exit
[root@lk7 redis-6.2.6]# redis-cli
127.0.0.1:6379> key *
(error) ERR unknown command `key`, with args beginning with: `*`,
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379>