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 | 默认空字符串,指向· |
设置开启自启动服务
[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工具测试本地连接,远程连接。
配置
配置信息,参考安装中的在安装目录下修改配置文件信息部分。修改了配置之后,需要通过 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就卸载完成了。