文章目录
一、安装环境
由于redis是有C语言开发的,所以先确保centos上有gcc环境
yum install -y gcc
二、下载安装包
1.wget下载
wget http://download.redis.io/releases/redis-6.2.1.tar.gz // 直接下载至centos上
2.手动下载
官网下载redis安装包,你可以前往redis官网https://redis.io/,下载最新的安装包,注意centos上一般是tar.gz格式的。
然后将该安装包转移至centos7上,并且将其解压。转移可以使用xftp进行传输
tar -zxvf redis-6.2.1.tar.gz // 这是解压命令
三、安装redis
1.进入解压目录编译redis文件
使用make进行编译redis文件,然后就开始编译,这个时间可能会有点久,大概50秒左右
cd redis-6.2.1 // 进入目录
make // 编译
进入src,启动redis
此时可以启动redis服务了,使用./redis-server,就可以前台启动redis了。
以及使用ps -ef | grep redis可以看到redis进程在跑。
四、将redis转成服务
虽然这样可以启动redis服务了,但并不是很方便,
因为你每次都要进入redis-server所在目录,执行./redis-server才能启动redis
1.安装路径
进入redis-6.2.1/src目录下,
然后输入make install PREFIX=/opt/redis6,
将安装目录放到/opt/redis6下面(当然提前创建好相应目录)
make install PREFIX=/opt/redis6
2.配置环境变量
export REDIS_HOME=/opt/redis6
export PATH=$PATH:$REDIS_HOME/bin
配置好之后编译一下配置文件 source /etc/profile
3. 进入utils文件目录
进入utils目录下执行install_server.sh文件
但是你直接执行可能会抛出错误
解决方案是,你需要更改这个shell文件,并注释掉其中一些代码,将下图中的代码注释掉。
vi ./install_server.sh // 进入shell文件
#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
然后再次执行./install_server.sh,
成功后你就会进入如下图所示的界面,一般来说如果你认同它默认的设置,
比如端口默认为6379,配置文件路径默认为/etc/redis/6379.conf等等,
那你就直接回车键一路敲下去,
当然如果你不认同就可以在我画出来的红框的地方写上自己的配置。
这样你的服务就好了,接下来就是启动服务了。
4.启动服务
你直接输入service redis_6379 start 即可启动服务。
service redis_6379 start
service redis_6379 restart
service redis_6379 stop
但是这边有一个需要注意的点,就是你启动redis服务之后,
你不是通过stop方式关闭的而是通过kill -9 方式关闭的时候,你再启动时会启动报错,如下图:
它会说redis_6379.pid已经存在,这时候直接将其删除即可
rm -rf /var/run/redis_6379.pid // 先删除该pid
service redis_6379 restart // 然后重新启动即可
5.服务开机自启动
chkconfig redis on // 开机自启
chkconfig redis off // 取消开机自启
五、redis配置文件修改
此处将会介绍redis配置文件的常见修改,
当然因为之前已经将其转成服务了,
所以我们修改的配置文件的实际路径应该不是在原来的src目录下的那个了,
而是在 /etc/redis/6379.conf 这个目录下
其实我们可以先将该文件复制到我们本地桌面上,改好之后再传输上去覆盖原来的conf文件
另外的好处是因为本地的软件基本都比较强大,比如像vscode这种,所以能更好的查找、替换和修改。
1. Redis默认不是以守护进程的方式运行,我们此处可以修改为以守护进程形式
daemonize no --> daemonize yes
2. 端口修改 port 6379
3. 绑定的主机地址
bind * -::*
# Examples:
# bind 192.168.1.100 10.0.0.1 # listens on two specific IPv4 addresses
# bind 127.0.0.1 ::1 # listens on loopback IPv4 and IPv6
# bind * -::* # like the default, all available interfaces
4. 当客户端限制多久之后关闭,如果数值为0,那就是关闭此功能
timeout 300
5. 指定日志就级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel verbose
6. 设置数据库的数量,默认为0,可以使用select <dbid> 命令在连接上指定数据库id
databases 16
7. 保存和同步RDB快照 save <seconds> <changes>
Redis 默认配置文件中提供了三个条件
save 900 1 // 900秒有一个更改
save 300 10 // 300秒内有10个更改
save 60 10000 // 60秒内有10000个更改
8. 最大内存限制,达到最大内存限制之后,将无法再进行写入操作,但可以读
maxmemory <bytes>
9. 最大客户端连接数
maxclients 128
10. 指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,
如果不开启,可能会在断电时导致一段时间内的数据丢失。
因为 redis本身同步数据文件是按上面save条件来同步的,
所以有的数据会在一段时间内只存在于内存中。默认为no
appendonly no
11. 指定更新日志文件名,默认为appendonly.aof
appendfilename appendonly.aof
12. 指定更新日志条件,共有3个可选值:
no:表示等操作系统进行数据缓存同步到磁盘(快)
always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec:表示每秒同步一次(折衷,默认值)
appendfsync everysec
一般来说每秒写,everysec就可以了,既能保证一定的吞吐,就算断电最多丢一秒数据,可以接受。
如果是always,那么你的redis的吞吐量将会降低成mysql水平,
如果是no,那么就会有很大的不确定性,到时候会根据os cache自己的策略去写入aof中