Redis入门:Linux基础安装

2022-03-24 10:27:22 浏览数 (1)

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>

0 人点赞