Redis入门:Linux基础安装
要安装Redis需要准备以下基本的环境。
1 准备工作
本次安装是在Unix类操作系统安装。
1.1 安装环境
Unix类操作系统,可以使用Linux、CentOS等。
此处选择使用CentOS7。
系统中必须提前安装gcc,安装命令如下:
代码语言:javascript复制yum install gcc
1.2 关闭防火墙
CentOS 7的防火墙临时命令如下:
代码语言:javascript复制#查看状态
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/
代码语言:javascript复制mkdir –p /home/software
cd /home/software
1.4 下载Redis
下载Redis的网址:https://redis.io/download
现在官网提供的最新的稳定版本为6.2.6版本。可以直接在官网下载。下载完成之后,上传到上一步规划的目录中。
另外可以直接在上一步创建的目录中,使用wget进行下载,命令如下:
代码语言:javascript复制#下载指定版本:
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 解压安装包
解压命令如下:
代码语言:javascript复制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的原因。
下面是安装的命令:
代码语言:javascript复制cd redis-6.2.6
#编译安装命令
make
早期的版本使用的安装命令如下:
代码语言:javascript复制make && make install
2.1 命令未找到错误
如果没有安装gcc会报找不到一系列命令的错误,例如:
代码语言:javascript复制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目录中:
代码语言:javascript复制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 启动服务
启动服务的命令如下:
代码语言:javascript复制redis-server
启动服务的过程如下:
代码语言:javascript复制[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)
当前的启动方式会一直占用当前连接的输入。所以可以使用以下启动方式,将进程转入后台:
代码语言:javascript复制redis-server &
此方式启动之后,再点击回车键,则出现输入提示符,即可正常输入其他命令。
3.4 检查服务
检查服务是否正常工作,有以下几个手段:
使用客户端进行连接测试:
代码语言:javascript复制redis-cli ping
PONG
回复PONG表示成功。
还可以使用如下方式:
代码语言:javascript复制[root@lk7 redis-6.2.6]# redis-cli
127.0.0.1:6379> ping
PONG
也可以使用检查进程的方式,对当前服务进行检查:
代码语言:javascript复制[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服务,需要登录客户端执行停止命令进行停止,操作如下:
代码语言:javascript复制[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行,将设置密码的选项打开,如下:
代码语言:javascript复制899 # command, these will cause requirepass to be ignored.
900 #
901 # requirepass foobared
902 requirepass 123
设置完退出保存。
启动的时候要使用配置文件进行启动,此密码才能生效,启动方式如下:
代码语言:javascript复制src/redis-server redis.conf &
在启动命令后加上配置文件,命令中注意路径。
3.6.2 临时密码
临时密码是通过命令设置的,只在本次服务器运行的时候生效,一旦服务重启该密码就失效了。
设置密码的命令如下:
代码语言:javascript复制config set requirepass keyword
操作步骤如下:
代码语言:javascript复制[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>