Redis在Centos7上的安装部署

2022-02-12 09:43:25 浏览数 (1)

大家好,又见面了,我是全栈君。

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。

Redis的所有数据都是保存在内存中(效率高),然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。

关于Redis更多的简介请参考Redis官方网站中文版,在这里我仅仅给出Redis在Centos7上的安装部署。

步骤一:下载Redis安装包

首先从官网下在redis正式版的压缩包redis-2.8.19.tar.gz:

代码语言:javascript复制
cd /home/downloads
wget http://download.redis.io/releases/redis-2.8.19.tar.gz

步骤二:编译源程序

解压和编译

代码语言:javascript复制
tar -zxvf redis-2.8.19.tar.gz
cd redis-2.8.19/src
//编译
make

…….此处是大量编译过程,省略。可能有一些警告,不去官它们………….

CC setproctitle.o

CC hyperloglog.o

CC latency.o

CC sparkline.o

LINK redis-server

INSTALL redis-sentinel

CC redis-cli.o

LINK redis-cli

CC redis-benchmark.o

LINK redis-benchmark

CC redis-check-dump.o

LINK redis-check-dump

CC redis-check-aof.o

LINK redis-check-aof

Hint: It’s a good idea to run ‘make test’ ;)

进入src进行安装:

代码语言:javascript复制
cd src
make install

//安装过程提示

Hint: It’s a good idea to run ‘make test’ ;)

代码语言:javascript复制
INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install

这时候,我们可以看看src下的文件:

可以看到此时,src文件夹下出现了一些绿色的文件,这些文件就是我们以后需要用到的命令文件

步骤三:移动文件

移动文件,便于管理:(所有源代码安装的软件都安装在/usr/local下,如apache等)

创建两个文件夹,bin用于存放命令,etc拥有存放配置文件。

代码语言:javascript复制
mkdir -p /usr/local/redis/etc
mkdir -p /usr/local/redis/etc

-p是递归创建。

接下来,将redis-2.8.19文件夹下的redis.conf复制到/usr/local/redis/etc/

并将src目录下的7个命令文件(绿色的),移动到/usr/local/redis/bin/

代码语言:javascript复制
[lsgozi@localhost src]$ cd ..
[lsgozi@localhost redis-2.8.19]$ ls
00-RELEASENOTES  COPYING  Makefile   redis.conf        sentinel.conf  utils
BUGS             deps     MANIFESTO  runtest           src
CONTRIBUTING     INSTALL  README     runtest-sentinel  tests
[lsgozi@localhost redis-2.8.19]$ mv ./redis.conf /usr/local/redis/etc/
[lsgozi@localhost redis-2.8.19]$ cd src
[lsgozi@localhost src]$  mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server /usr/local/redis/bin/

步骤四:启动Redis服务

首先进入刚才安装redis的目录:

代码语言:javascript复制
[lsgozi@localhost src]$ cd /usr/local/redis/bin
[lsgozi@localhost bin]$ ls
mkreleasehdr.sh  redis-check-aof   redis-cli       redis-server
redis-benchmark  redis-check-dump  redis-sentinel

之后我们启动redis服务。启动redis服务需要用到命令redis-server

代码语言:javascript复制
[lsgozi@localhost bin]$ ./redis-server

但是,这样做的话,我们并没有使用etc的下的配置文件进行启动

如果希望通过指定的配置文件启动,需要在启动时指定配置文件:

这里我们先用ctrl C来终止服务,然后查看redis服务是否终止干净了,之后通过设置配置文件来启动服务:

按下ctrl c后(^C):

代码语言:javascript复制
^C[32138 | signal handler] (1463921540) Received SIGINT scheduling shutdown...
[32138] 22 May 20:52:20.380 # User requested shutdown...
[32138] 22 May 20:52:20.380 * Saving the final RDB snapshot before exiting.
[32138] 22 May 20:52:20.393 * DB saved on disk
[32138] 22 May 20:52:20.393 # Redis is now ready to exit, bye bye...

运行:pstree -p | grep redis 发现redis服务已经被终止干净

现在我们带上配置文件 /usr/local/etc/redis.conf 运行redis

代码语言:javascript复制
[lsgozi@localhost bin]$ ./redis-server /usr/local/redis/etc/redis.conf

但是,现在redis仍然是在前台运行。

如果要后台启动该怎么办呢?

在这里我们用—-直接将命令丢到后台中“执行”的 & ?可以吗?

答案是不可以的,Redis的后台启动并运行需要通过配置文件中的参数设置。如果需要在后台运行,把daemonize配置项改为yes

代码语言:javascript复制
vim /usr/local/redis/etc/redis.conf

搜索 :’daemonize’

把daemonize配置项改为yes

保存退出

之后我们再次使用配置文件启动redis-server。

可以看到,redis是后台启动了,并且通过ps命令可以查看到redis正在运行。

代码语言:javascript复制
[lsgozi@localhost bin]$ ./redis-server /usr/local/redis/etc/redis.conf
[lsgozi@localhost bin]$ ps -ef | grep redis
root     13154     1  0 22:53 ?        00:00:00 ./redis-server *:6379
neil     13162  8143  0 22:54 pts/0    00:00:00 grep --color=auto redis
[lsgozi@localhost bin]$ pstree -p | grep redis
           |-redis-server(13154)- -{redis-server}(13156)
           |                     `-{redis-server}(13157)

Redis服务端默认连接端口是6379.

就好比 mysql 或 mariadb 服务端默认连接端口是3306

在平时,我们往往需要查看6379端口是否被占用。可以用以下命令:

代码语言:javascript复制
netstat -tunpl | grep 6379

注意,redis服务需要 root 权限才能查看,不然只能检查到6379被某个进程占用,但是看不到进程名称。

至此,redis服务已经按照配置文件启动成功!!、

步骤五:客户端登录

代码语言:javascript复制
[lsgozi@localhost bin]$ /usr/local/redis/bin/redis-cli

回车后如果提示:

代码语言:javascript复制
[lsgozi@localhost bin]$ /usr/local/redis/bin/redis-cli
127.0.0.1:6379>//提示

则表明客户端登录成功

步骤六:关闭Redis服务

停止Redis实例

我们可以使用pkill redis-server

代码语言:javascript复制
[lsgozi@localhost bin]$ pkill redis-server
[lsgozi@localhost bin]$ netstat -tunpl | grep 6379
[lsgozi@localhost bin]$ 
[lsgozi@localhost bin]$ pstree -p | grep redis
[lsgozi@localhost bin]$ 
[lsgozi@localhost bin]$ 
[lsgozi@localhost bin]$ /usr/local/redis/bin/redis-cli 
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> 
not connected> exit

关闭之后,发现6379就不再被占用了,redis的进程也都没有了。

客户登陆也无法成功了。

也可以使用/usr/local/redis/bin/redis-cli shutdown,这种方法使用客户端命令redis-cli 进行Redis服务的停止

代码语言:javascript复制
[lsgozi@localhost bin]]$ ./redis-server /usr/local/redis/etc/redis.conf
[lsgozi@localhost bin]$ pstree -p | grep redis
           |-redis-server(13509)- -{redis-server}(13511)
           |                     `-{redis-server}(13512)
[lsgozi@localhost bin]$ /usr/local/redis/bin/redis-cli shutdown
[lsgozi@localhost bin]$ pstree -p | grep redis
[lsgozi@localhost bin]$ 
[lsgozi@localhost bin]$ sudo netstat -tunpl | grep 6379
[lsgozi@localhost bin]$

当然关闭某个服务还可以使用 killall 和 kill -9.

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/111996.html原文链接:https://javaforall.cn

0 人点赞