Remote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

    Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

    它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

    此处演示在CentOS7系统中,redis的安装、配置、使用以及卸载。

安装准备

  • gcc编译器。由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行yum install -y gcc命令进行安装。
  • Redis源码包,可以在[这里](https://download.redis.io/releases/)现在你要安装的版本。我选择的版本是 redis-5.0.10.tar.gz。

安装

下载源码包

将源码压缩文件下载到 /usr/local/ 目录下

[root@localhost /]# cd /usr/local/[root@localhost local]# wget http://download.redis.io/releases/redis-5.0.10.tar.gz--2020-12-14 17:03:21--  http://download.redis.io/releases/redis-5.0.10.tar.gz正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1正在连接 download.redis.io (download.redis.io)|45.60.125.1|:80... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度:1990507 (1.9M) [application/octet-stream]正在保存至: “redis-5.0.10.tar.gz”100%[==============================================>] 1,990,507   17.0KB/s 用时 64s    2020-12-14 17:04:35 (30.4 KB/s) - 已保存 “redis-5.0.10.tar.gz” [1990507/1990507])[root@localhost local]#

解压

保持在在 /usr/local/ 目录下,执行下列命令。

[root@localhost local]# tar -zxvf redis-5.0.10.tar.gzredis-5.0.10/redis-5.0.10/.gitignoreredis-5.0.10/00-RELEASENOTESredis-5.0.10/BUGSredis-5.0.10/CONTRIBUTINGredis-5.0.10/COPYINGredis-5.0.10/INSTALLredis-5.0.10/MANIFESTOredis-5.0.10/Makefileredis-5.0.10/README.mdredis-5.0.10/deps/redis-5.0.10/deps/Makefileredis-5.0.10/deps/README.mdredis-5.0.10/deps/hiredis/......太长了,省略.....redis-5.0.10/utils/redis-sha1.rbredis-5.0.10/utils/redis_init_scriptredis-5.0.10/utils/redis_init_script.tplredis-5.0.10/utils/releasetools/redis-5.0.10/utils/releasetools/01_create_tarball.shredis-5.0.10/utils/releasetools/02_upload_tarball.shredis-5.0.10/utils/releasetools/03_test_release.shredis-5.0.10/utils/releasetools/04_release_hash.shredis-5.0.10/utils/releasetools/changelog.tclredis-5.0.10/utils/speed-regression.tclredis-5.0.10/utils/whatisdoing.sh[root@localhost local]#

解压后,在 /usr/local/ 目录下,会产生一个 redis-5.0.10 目录,这就是redis的解压目录。

cd切换到 redis 解压目录下,执行编译

[root@localhost local]# cd redis-5.0.10/[root@localhost redis-5.0.10]# makecd src && make allmake[1]: 进入目录“/usr/local/redis-5.0.10/src”    CC Makefile.depmake[1]: 离开目录“/usr/local/redis-5.0.10/src”make[1]: 进入目录“/usr/local/redis-5.0.10/src”rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark(cd ../deps && make distclean)make[2]: 进入目录“/usr/local/redis-5.0.10/deps”(cd hiredis && make clean) > /dev/null || true(cd linenoise && make clean) > /dev/null || true(cd lua && make clean) > /dev/null || true(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true(rm -f .make-*)make[2]: 离开目录“/usr/local/redis-5.0.10/deps”(rm -f .make-*)echo STD=-std=c99 -pedantic -DREDIS_STATIC='' >> .make-settingsecho WARN=-Wall -W -Wno-missing-field-initializers >> .make-settingsecho OPT=-O2 >> .make-settingsecho MALLOC=jemalloc >> .make-settingsecho CFLAGS= >> .make-settingsecho LDFLAGS= >> .make-settingsecho REDIS_CFLAGS= >> .make-settingsecho REDIS_LDFLAGS= >> .make-settingsecho PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb   -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settingsecho PREV_FINAL_LDFLAGS=  -g -ggdb -rdynamic >> .make-settings(cd ../deps && make hiredis linenoise lua jemalloc)make[2]: 进入目录“/usr/local/redis-5.0.10/deps”(cd hiredis && make clean) > /dev/null || true(cd linenoise && make clean) > /dev/null || true(cd lua && make clean) > /dev/null || true(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true(rm -f .make-*)(echo "" > .make-cflags)(echo "" > .make-ldflags)MAKE hirediscd hiredis && make staticmake[3]: 进入目录“/usr/local/redis-5.0.10/deps/hiredis”cc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.ccc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  hiredis.ccc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  sds.ccc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  async.ccc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  read.car rcs libhiredis.a net.o hiredis.o sds.o async.o read.omake[3]: 离开目录“/usr/local/redis-5.0.10/deps/hiredis”MAKE linenoisecd linenoise && makemake[3]: 进入目录“/usr/local/redis-5.0.10/deps/linenoise”cc  -Wall -Os -g  -c linenoise.cmake[3]: 离开目录“/usr/local/redis-5.0.10/deps/linenoise”MAKE luacd lua/src && make all CFLAGS="-O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' " MYLDFLAGS="" AR="ar rcu"make[3]: 进入目录“/usr/local/redis-5.0.10/deps/lua/src”cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lapi.o lapi.ccc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lcode.o lcode.ccc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldebug.o ldebug.ccc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldo.o ldo.cldo.c: 在函数‘f_parser’中:ldo.c:496:7: 警告:未使用的变量‘c’ [-Wunused-variable]   int c = luaZ_lookahead(p->z);       ^cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldump.o ldump.ccc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lfunc.o lfunc.ccc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lgc.o lgc.c......太长了,省略.....    INSTALL redis-sentinel    CC redis-cli.o    LINK redis-cli    CC redis-benchmark.o    LINK redis-benchmark    INSTALL redis-check-rdb    INSTALL redis-check-aofHint: It's a good idea to run 'make test' ;)make[1]: 离开目录“/usr/local/redis-5.0.10/src”[root@localhost redis-5.0.10]#

安装并指定安装目录

其中,PREFIX指定了安装目录为 /usr/local/redis

[root@localhost redis-5.0.10]# make install PREFIX=/usr/local/rediscd src && make installmake[1]: 进入目录“/usr/local/redis-5.0.10/src”    CC Makefile.depmake[1]: 离开目录“/usr/local/redis-5.0.10/src”make[1]: 进入目录“/usr/local/redis-5.0.10/src”Hint: It's a good idea to run 'make test' ;)    INSTALL install    INSTALL install    INSTALL install    INSTALL install    INSTALL installmake[1]: 离开目录“/usr/local/redis-5.0.10/src”[root@localhost redis-5.0.10]#

复制配置文件到安装目录中

保持在/usr/local/redis-5.0.10 目录下,将 该目录下的redis.conf文件通过cp命令复制到/usr/local/redis/bin 目录下(/usr/local/redis/ 为上面一步指定的安装路径)。

[root@localhost redis-5.0.10]# cp redis.conf /usr/local/redis/bin/[root@localhost redis-5.0.10]#

在安装目录下修改配置文件信息

[root@localhost redis-5.0.10]# cd /usr/local/redis/bin/[root@localhost bin]# lsredis-benchmark  redis-check-rdb  redis.conf      redis-serverredis-check-aof  redis-cli        redis-sentinel[root@localhost bin]# mv redis.conf redis-6378.conf[root@localhost bin]# lsredis-6378.conf  redis-check-aof  redis-cli       redis-serverredis-benchmark  redis-check-rdb  redis-sentinel[root@localhost bin]#[root@localhost bin]# vi redis-6378.conf [root@localhost bin]#

修改的配置参数以及说明

属性

原值

修改值

说明

bind

127.0.0.1

0.0.0.0 或 注释掉

放开的话,只有bind绑定的ip才能访问redis

protected-mode

yes

no

redis3.2版本后新增protected-mode配置,默认是yes,即开启。设置外部网络连接redis服务,设置方式如下:1.关闭protected-mode模式,此时外部网络可以直接访问。2.开启protected-mode保护模式,需配置bind ip或者设置访问密码。

port

6379

6378

端口号,默认是6379,可以根据需求自己约定端口号

daemonize

no

yes

用来指定redis是否要用守护线程的方式启动,默认是no。

当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。

redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。

pidfile

/var/run/redis_6379.pid

/var/run/redis_6378.pid

也是为了端口和服务对应,便于查找,可以不修改

logfile

""

/usr/local/redis/logs/redis_6378.log

默认空字符串,指向·dev/null 目录。此时可以设置日志路径,但要注意:确保设置的目录是存在的,没有的话用mkdir先创建好

设置开启自启动服务

[root@localhost bin]# vim /etc/systemd/system/redis6378.service[root@localhost bin]#

在 /etc/systemd/system/redis6378.service 中复制粘贴一下内容

[Unit]Description=redis6378-serverAfter=network.target[Service]Type=forkingExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis-6378.confPrivateTmp=true[Install]WantedBy=multi-user.target

其中ExecStart设置成自己安装的redis的路径

如果自定义的 /etc/systemd/system/xxxx.service 有修改过,需要先执行一下 systemctl daemon-reload 命令,用于重新加载配置文件,然后再重新启动相关服务。

依次执行一下命令,启动redis服务并设置开机自启动

[root@localhost redis]# systemctl daemon-reload[root@localhost redis]# systemctl start redis6378.service[root@localhost redis]# systemctl enable redis6378.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/redis6378.service to /etc/systemd/system/redis6378.service.[root@localhost redis]#

防火墙开放端口

firewall

[root@localhost local]# firewall-cmd --zone=public --add-port=6378/tcp –permanent[root@localhost local]# firewall-cmd –reload[root@localhost local]#

iptables

[root@localhost redis]# vi /etc/sysconfig/iptables[root@localhost redis]# systemctl restart iptables.service[root@localhost redis]#

在 /etc/sysconfig/iptables 中添加如下一行,保存退出

-A INPUT -m state --state NEW -m tcp -p tcp --dport 6378 -j ACCEPT

检查redis是否启动成功

[root@localhost redis]# ps aux | grep redisroot     10846  0.1  0.1 153992  7908 ?        Ssl  16:04   0:01 /usr/local/redis/bin/redis-server *:6378root     12546  0.0  0.0 112824   980 pts/3    S+   16:25   0:00 grep --color=auto redis[root@localhost redis]#

然后就可以用 redis-cli 或者 Redis Desktop Manager工具测试本地连接,远程连接。

redis卸载重装 centos7卸载redis_redis

配置

配置信息,参考安装中的在安装目录下修改配置文件信息部分。修改了配置之后,需要通过 systemctl restart redis6378.service 重启一下redis服务。同时注意如果 redis6378.service 也有了变动,记得先 systemctl daemon-reload 重新加载配置文件,再重启redis服务。另外,如果想配置多个端口启动redis服务的话,从安装中的复制配置文件到安装目录中 开始,创建新端口对应的redis-***.conf ,然后按照下面的安装步骤走即可。

卸载

说明:此卸载方法对应上面的安装中完成的配置进行。

查看redis进程

[root@localhost ~]# ps aux | grep redisroot      1357  0.0  0.0 112824   980 pts/1    S+   09:01   0:00 grep --color=auto rediroot     10846  0.1  0.1 159624  8576 ?        Ssl  12月14   1:19 /usr/local/redis/bin/redis-server *:6378[root@localhost ~]#

关闭redis

通过redis-cli 关闭

先进入redis-cli 所在目录(如果安装的时候配置了环境变量的话,不用切换目录), 通过 ./redis-cli -h ip地址 -p 端口号 -u url格式的地址 -a 密码 shutdown 关闭redis进程。其中 -h -p -u -a 根据实际需要自由填写。没有的话,默认的是关闭 本地 端口号为6379 无密码 的redis进程(如果有的话)。

[root@localhost local]# cd  /usr/local/redis/bin/[root@localhost bin]# ./redis-cli -p 6378 shutdown[root@localhost bin]# ps aux | grep redisroot     30561  0.0  0.0 112824   976 pts/3    S+   13:51   0:00 grep --color=auto redis[root@localhost bin]#

再次通过 ps aux | grep redis查看,确认端口号为6378的redis服务是否已经关闭。

通过 systemctl stop redis***.service 关闭

这里的 redis6378.service 是上面安装时,在 /etc/systemd/system/ 目录下自定义的开机服务,自己根据自己创建的服务名修改。不必 进入redis-cli 所在目录。

[root@localhost ~]# systemctl stop redis6378.service [root@localhost ~]# ps aux | grep redisroot      4582  0.0  0.0 112824   980 pts/1    S+   09:22   0:00 grep --color=auto redi[root@localhost ~]#

再次通过 ps aux | grep redis查看,确认端口号为6378的redis服务是否已经关闭。

通过杀进程的方式 关闭

先 通过 ps aux | grep redis 获取PID,然后通过 kill -9 PID 发方式杀死进程。不必 进入redis-cli 所在目录。

[root@localhost /]# ps aux|grep redisroot      4662  0.1  0.0 153992  4332 ?        Ssl  09:22   0:00 /usr/local/redis/bin/redis-server *:6378root      6201  0.0  0.0 112824   976 pts/1    S+   09:35   0:00 grep --color=auto redi[root@localhost /]# kill -9 4662[root@localhost /]# ps aux|grep redisroot      6253  0.0  0.0 112824   980 pts/1    S+   09:36   0:00 grep --color=auto redi[root@localhost /]#

再次通过 ps aux | grep redis查看,确认端口号为6378的redis服务是否已经关闭。

删除安装时 make install 生产的文件

上面安装时通过make install PREFIX=/usr/local/redis 指定了目录 /usr/local/redis,所以这里只需要将 /usr/local/redis目录及目录下文件子目录删除即可。

[root@localhost local]# rm -rf /usr/local/redis[root@localhost local]#

注意: 对rm -rf命令的使用一定要谨慎!! 建议先在文本编辑器上编辑好,执行时一定要再三确认! 尤其是在生产环境!

删除 /etc/systemd/system/ 下自定义的开机启动服务

[root@localhost local]# rm -rf /etc/systemd/system/redis6378.service[root@localhost local]#

注意: 对rm -rf命令的使用一定要谨慎!! 建议先在文本编辑器上编辑好,执行时一定要再三确认! 尤其是在生产环境!

需要的话,删除下载的压缩包和解压文件

我在上面安装的时候,压缩包和解压文件是在 /usr/local/ 目录下,则删除命令如下:

[root@localhost /]# cd /usr/local/[root@localhost local]# ll总用量 1956drwxr-xr-x. 2 root root       6 4月  11 2018 bindrwxr-xr-x. 2 root root       6 4月  11 2018 etcdrwxr-xr-x. 2 root root       6 4月  11 2018 gamesdrwxr-xr-x. 2 root root    4096 12月  1 13:27 gccdrwxr-xr-x. 2 root root       6 4月  11 2018 includedrwxr-xr-x. 2 root root       6 4月  11 2018 libdrwxr-xr-x. 2 root root       6 4月  11 2018 lib64drwxr-xr-x. 2 root root       6 4月  11 2018 libexecdrwxr-xr-x. 2 root root    4096 11月 30 14:39 mysqldrwxrwxr-x. 6 root root    4096 10月 27 14:49 redis-5.0.10-rw-r--r--. 1 root root 1990507 10月 27 15:00 redis-5.0.10.tar.gzdrwxr-xr-x. 2 root root       6 4月  11 2018 sbindrwxr-xr-x. 5 root root      49 11月 26 22:45 sharedrwxr-xr-x. 2 root root       6 4月  11 2018 src[root@localhost local]# rm -rf /usr/local/redis-5.0.10[root@localhost local]# rm -rf /usr/local/redis-5.0.10.tar.gz[root@localhost local]#

注意: 对rm -rf命令的使用一定要谨慎!! 建议先在文本编辑器上编辑好,执行时一定要再三确认! 尤其是在生产环境!

至此,redis就卸载完成了。