完全参考官方文档、史上最全、所有安装过程中遇到的问题都有原理解析的安装指北
前言
你可能有个疑问:
为什么一个安装redis都值得写一篇文章?你有没有发现现在全网博客大家似乎都在输出自己的观点,完全把官方文档置之度外,而且都是只提供操作不说明缘由,导致即使你看完下次也需要再次搜索相关文档,这本就和写博客的初衷相悖,我希望本篇文章可以帮助那些对技术的原理有一定研究的朋友们一点帮助,算是抛砖引玉吧,希望大家的技术文档都有一定的深度。
------------------------------------- 本文创建于 2021.11.12 23:00 熬夜肝的------------------------------------------------
安装与启动
老规矩先上官网文档:https://redis.io/topics/quickstart
安装
- 安装脚本
注:默认安装位置为: /usr/local/bin这里会有几个文件如下:# 下载、解压、进入 wget https://download.redis.io/releases/redis-6.2.6.tar.gz tar -zxvf redis-6.2.6.tar.gz cd redis-6.2.6 # 安装gcc yum install gcc # 编译 有问题可以make distclean清除缓存 make # 官方建议使用test测试 make test # 如需单独安装可以执行install make install
- redis-server是 Redis 服务器本身。
- redis-sentinel是 Redis Sentinel 可执行文件(监控和故障转移)。
- redis-cli是与 Redis 对话的命令行界面实用程序。
- redis-benchmark用于检查Redis性能。
- redis-check-aof和redis-check-rdb(3.0 及以下版本中的redis-check-dump)在数据文件损坏的罕见事件中非常有用。
启动
- 启动脚本
默认启动我就不多说了我们直接进阶使用配置启动
注:conf的建议配置项目(官方建议)# 复制conf文件放到和redis一起的位置比较好管理 cp redis.conf /usr/local/bin/ # 启动 redis-server /usr/local/bin/redis.conf # 查看redis是否启动 -p 指定端口 -a 指定密码 redis-cli -p 6739 ping # 也可以查看进程 ps -ef|grep redis
- 将daemonize设置为 yes(默认设置为 no)后台启动,单词的意思是守护进程。
- 将pidfile设置为/var/run/redis.pid(如果需要,修改端口)。
我们看到在安装完后会有这个pid文件 - 相应地更改port 默认端口是 6379。
- 设置loglevel
对应译文:
debug: (大量信息,可用于开发/测试)
verbose :(许多很少有用的信息, 但不是像调试级别这样的混乱)
notice :(适度冗长, 你在生产中可能想要什么)
warning :(只记录非常重要 / 关键消息) - 将logfile设置为你要保存的目录 例如:/var/log/redis_6379.log
- 将dir 设置为你要保存数据的目录 例如:/var/redis/6379(非常重要的一步!)
启动效果
如果设置daemonize为yes的话只能这样看
至此安装与启动就完成了,你会说就这???
当然不是了,这就上大招!
安装进阶
首先这部分在官方文档是这样叫的其实就是说了一个关于如何在Debian 或者 Ubuntu下开机自启动
在官方文档的对应部分是:Installing Redis more properly
我们会发现它提到了utils目录下的脚本,那我们不妨看下这里面都有哪些脚本
记住这张图的脚本,后面会考
Debian系下开机自启动
首先我们按照官方文档来一波操作
- 官方脚本
# 新建两个目录用来存配置文件和数据 mkdir /etc/redis mkdir /var/redis # 将utils目录下的 init 脚本复制到 /etc/init.d 中。建议使用运行此 Redis 实例的端口的名称 cp utils/redis_init_script /etc/init.d/redis_6379 # 编辑初始化脚本 根据使用的端口修改REDISPORT vim /etc/init.d/redis_6379 # 使用端口号作为名称,将 Redis 发行版的根目录中找到的模板配置文件复制到 /etc/redis/ 中 cp redis.conf /etc/redis/6379.conf # 在 /var/redis 中创建一个目录,作为此 Redis 实例的数据和工作目录: mkdir /var/redis/6379 # 编辑配置文件,确保执行以下更改: daemonize yes pidfile /var/run/redis_6379.pid logfile /var/log/redis_6379.log dir /var/redis/6379 # 加入开机自启 /etc/init.d/redis_6379 start
- 进阶官方脚本
我们回头继续看utils的脚本
我们发现这个install_server.sh似乎很可疑,不妨我们执行它一下
当你执行后你会神奇的发现其实和上边的是一样的而且会让你选择端口等信息,其实这就是一个官方写好的一键安装脚本
墙裂推荐使用这个脚本
Centos系下开机自启
有了上边的铺垫你可能会想,把那个脚本一执行不就完事了吗?其实是你想多了
我们执行下试试看
看译文:
欢迎来到重新设置服务安装器
此脚本将帮助您轻松设置运行重新设置服务器
此系统似乎使用systemd。
请查看此目录中提供的示例服务单元文件,并进行调整和安装。不好意思!
我们似乎看到了熟悉的东西systemd,这个东西是什么这里就不展开讲了,我们接着回头看utils的脚本
好像我们发现了一个不得了的东西systemd-redis_server.service,编辑它
这下是不是就很熟悉了
- 推荐方式
我们使用systemd来实现自启动
设置自启并启动# 拷贝service cp /home/soft/redis-6.2.6/utils/systemd-redis_server.service /usr/lib/systemd/system # 编辑 添加参数 如下图使其使用配置文件启动 vim systemd-redis_server.service # 重命名 mv systemd-redis_server.service redis.service
# 设置自启 systemctl enable redis # 启动 systemctl start redis # 停止 systemctl stop redis # 查看状态 systemctl status redis
- 不推荐方式
这个方式是在网上大家互相抄的一个版本,也不知道谁是原创我就不@了
先看熟悉的那张图
简单来说就是出现警告后注掉对应代码强制执行脚本
这样做虽然也可以实现使用systemctl 但是不建议这样做#bail if this system is managed by systemd #_pid_1_exe="$(readlink -f /proc/1/exe)" #if [ "${_pid_1_exe##*/}" = systemd ] #then # echo "This systems seems to use systemd." # echo "Please take a look at the provided example service unit files in this directory, and adapt and install them. Sorry!" # exit 1 #fi
------------------------------------ 20211114补充---------------------------
redis的安全相关
老规矩先上官方文档:https://redis.io/topics/security
- 关于bind
我们常常需要把redis的bind设置为0.0.0.0来让其可以被远程访问,那么这里的原因是什么?我翻了很多资料都含糊其辞,似乎大家对这个东西根本不关心,但大家有没有想过,如果设置为0.0.0.0,那所有都可以连接redis是不是这样有安全隐患?