概述
对redis来说,在学习和工作中,安装配置环节无疑是最简单的。无论是单机安装、sentinel主从还是cluster模式,都只需要一个安装包,每个节点给一个配置文件,然后使用配置文件启动就可以了。当然,在试验环节,我们可以连配置文件都省了,直接启动也是可以的。
这样说来,其实理解redis基础安装,主要在于理解配置文件,那么配置文件中有哪些内容呢?
- 如果是单机安装,那么配置文件中规定了端口号、是否后台运行、log文件名称及存放位置、访问密码等。
- 如果是主从模式,除了单机模式的参数外,还可以约定主从复制的相关规定,如主从切换的时间等。
- 如果是集群cluster模式,那么还需要开启cluster功能,并描述cluster的相关约定。
这篇博文描述redis的单机、主从模式的安装配置,下一篇描述cluster模式的安装、配置及节点管理。
服务器环境准备
[[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [[email protected] ~]# uname -a Linux redis 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [[email protected] ~]# getenforce Disabled [[email protected] ~]# systemctl is-active firewalld.service unknown [[email protected] ~]# hostname -i|awk ‘{print $NF,$(NF-1)}‘ 172.16.1.101 10.0.0.101
目录规划
目录 | 内容 |
/application/redis-3.2.12 | redis原始安装目录 |
/application/redis | redis原始安装目录的软连接 |
/data/redis/{port-number} | redis实例运行目录,port-number就是实例的端口号 |
最简单的安装
##创建基础目录 mkdir /application cd /application ##上传安装包redis-3.2.12.tar.gz rz -be tar -zxf redis-3.2.12.tar.gz ##创建软链接 ln -s redis-3.2.12 redis ##make cd redis make ##后台启动 /application/redis/src/redis-server & ##连接验证 /application/redis/src/redis-cli ##如果状态正常,会进入redis的命令行模式,如下(6379是redis的默认端口号): 127.0.0.1:6379> set name timmy OK 127.0.0.1:6379> get name "timmy" ##如上,可以连接,并正常读写,说明最基本的安装已经完成了##可使用exit退出redis命令行模式##关闭redis实例有两种方式##1.在redis命令行输入shutdown,然后exit退出##2.退出redis命令行后,使用redis-cli shutdown,有了后续配置后,使用这种方法时需要加上验证密码、端口号、host地址等参数,以后再说
修改环境变量
上面的启动、连接命令都在/application/redis/src/目录下,这个目录中还有很多其他的命令,是以后要经常使用的,为了方便,可以把这个路径添加到环境变量中。
echo ‘export PATH=/application/redis/src:$PATH‘>>/etc/profile source /etc/profile
配置文件
写一个配置文件
写一个简单的配置文件吧,如下:
[[email protected] application]# cat /data/redis/6379/6379.conf daemonize yes port 6379 logfile /data/redis/6379/redis.log dir /data/redis/6379 dbfilename dump.rdb bind 10.0.0.101 127.0.0.1 requirepass 123456 ###配置逐行说明
配置逐行说明:
- 是否后台运行,设置yes表示默认后台运行,这样启动时就不用加&符号了
- 实例监听的端口号
- redis日志存放路径
- 持久化文件存放位置
- RDB持久化数据文件
- bind地址,设置以后,其他服务器可以通过这个地址访问redis实例
- 访问密码
理解保护模式
重点说明一下:redis默认是只允许本地访问,实现方式是把保护模式设置了一个参数:protected-mode yes/no (保护模式,是否只允许本地访问)。
想要让其他服务器也可以访问,最简单的方法是把这个参数设置为no,但这种方式不够安全,所以遵循官方建议的另外一种方法,就是上面配置文件中写道的给定bind IP和访问密码。
接下来就可以连接redis实例并验证了。
趁着之前的实例还没有关闭,有必要体验一下保护模式的阴影,请看
[[email protected] application]# redis-cli -h 10.0.0.101 10.0.0.101:6379> get name (error) DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command ‘CONFIG SET protected-mode no‘ from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to ‘no‘, and then restarting the server. 3) If you started the server manually just for testing, restart it with the ‘--protected-mode no‘ option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.
如上,在没有配置关闭保护模式,和bind IP、访问密码的时候,虽然可以连接redis实例,但读取内容时会报错,并且给出几条解决方案。其中前三条大同小异,就是用各种方式关闭保护模式,我们采用的是第四种。
这里,如果把-h后的地址写成127.0.0.1,就可以正常读写了,所以他真的是只允许本地访问的,没错吧。
好了,接下来就正式验证通过配置文件启动的redis实例是不是可以正常运行了。
###关闭之前的实例,然后通过配置文件开启新的实例 redis-cli shutdown redis-server /data/redis/6379/6379.conf ###连接并验证 ##方式1 [[email protected] application]# redis-cli 127.0.0.1:6379> get name (error) NOAUTH Authentication required. 127.0.0.1:6379> auth 123456 OK 127.0.0.1:6379> CONFIG GET port 1) "port" 2) "6379" 127.0.0.1:6379> exit ###方式2 [[email protected] application]# redis-cli -a 123456 127.0.0.1:6379> CONFIG GET port 1) "port" 2) "6379" 127.0.0.1:6379> exit
如上,可以通过两种方式通过验证,方式一、连接成功后,用“auth password”验证;方式二、在连接实例时添加验证参数“-a passwor”。
上蒙面的config get是在线查看配置的命令,可以在redis命令行中查看配置,也可以用config set来修改配置,这些有机会的话,以后的博文中再说。
配置持久化
数据持久化的实现,很大程度保障了数据安全,这个是redis被广泛应用的最重要原因之一。redis的持久化方式有RDB和AOF两种。
RDB持久化
实现方式:在指定的时间间隔内生成数据集的时间点快照,把内存数据保存在磁盘中。
优点:速度快
缺点:可能会丢失数据
应用场景:主从复制就是基于RDB持久化实现的
配置参数:
###在配置文件中加入以下语句,前两行是已经配置过的 dir /data/redis/6379 dbfilename dump.rdb save 900 1 save 300 10 save 60 10000
后三行配置解读:指定时间间隔内,有指定数量的更改就把数据保存都磁盘
- 900秒(15分钟)内有1个更改
- 300秒(5分钟)内有10个更改
- 60秒内有10000个更改
AOF持久化
实现方式:记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。
优点:安全性更好,最大程度保留数据
缺点:日志可能会很大,不过在生产环境中,多用点磁盘空间也不算啥大问题。
配置参数:
###在配置文件中加入以下参数: appendonly yes appendfsync everysec
参数解读:
- 开启AOF持久化功能
- 设置AOF持久化同步频率,这个参数有三种模式,如下
appendfsync always:每执行一处修改,立即同步到AOF
appendfsync everysec:每秒钟执行一次同步动作
appendfsync no:由操作系统判断何时同步
验证
可以按照“最简单的安装”一节中的方式,设定一个变量。如果不配置持久化,每次重启实例,数据就会丢失,自然就读取不到了;设置持久化后,如果是RDB,会在时间间隔达到后被永久保存;如果是AOF,则会按照配置的同步方式进行保存。无论是哪种持久化,一旦触发了同步条件,数据就是安全的了,这时重启实例后,依然可以正常读取数据。
主从复制
原文地址:https://www.cnblogs.com/Go-Spurs-Go/p/10664540.html