Centos7下的Redis安装和配置文件部分参数解析
知识点总结
- redis6.0之前只支持单线程。
- redis数据存储于内存中,使用单线程操作redis的效率为最高的。多线程cpu进行上下文切换耗时。
- 对于内存系统来说,没有上下文切换效率是最高的。多次读写都在一CPU上的,在内存情况下,是最佳的方案。
- 可用来作数据库,缓存,消息队列中间件(MQ),
- Redis事务没有隔离级别的概念。
- Redis单条命令保存原子性,但是事务不保证原子性
- Redis的事务:开启事务multi 命令入队 执行事务 放弃事务后当前队列命令取消执行。
- 所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!Exec
- 事务异常(代码有问题!命令有错),事务中所有命令都不会执行
运行时异常(1/0) 如果事务队列中存在合理语法性,那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常 - 锁:乐观锁 分布式锁
1. Redis安装
- centos下载redis包
- 确保安装c++环境,解压redis包,并进行编译和安装。默认安装地址为usr/local/bin;redis6.0版本以上需要c++9.0版本进行编译安装
- 复制redis解压目录下的配置文件到/usr/local/bin目录中,可新建文件夹configf存放
- 设置redis后台启动,修改配置文件参数daemonize=yes
- 在安装目录下执行命令 redis-server configf/redis.conf(可复制多份文件进行伪集群)
- 连接redis服务器命令:当前目录下 redis-cli -h 主机(本地可省略) -p6379
- 查看服务是否启动 ps -ef|grep redis
- shutdown 关闭redis exit退出redis
- 测试并发 redis-benchmark -h localhost -p 6379 -c 并发数SBC -n请求数QPS
2.配置文件内容
2.1 网络配置参数
- bing 127.0.0.1 #绑定的ip 改为0.0.0.0可被远程访问
- protected -mode yes #保护模式
- port 6379 #端口设置
2.2通用设置
- dazemonize yes #守护进程模式运行(即后台运行,需要指定pidfile文件名)默认为no
- pidfile /var/run/redis_6379.pid #如果以后台的方式运行,需指定pid文件
- loglevel #日志级别debug,verbose,notice,warning
- logfile “” #日志的文件位置
- databases 16 #数据库数量 默认16
- always-show-logo yes #是否总是显示logo
2.3快照RDB和AOF持久化
-
redis是内存数据库,没有持久化,数据断电就会失效不进行保存到数据库中。
-
rdb持久化,在规定的时间内,执行多少次操作,则会持久化到数据库。
**优点:**1.适合大规模的数据恢复 2.对数据的完整性不高
**缺点:**1.需要一定的时间间隔进行操作。某段时间内宕机,则该时间段内的数据丢失2.fork进程的时候,会占用一定的内容空间 -
aof持久化,以独立日志的方式记录每次写命令,重启时再重新执行AOF文件更新到数据库。
**优点:**每一次修改都同步,文件的完整性。2.每秒同步一次,可能只丢失一秒的数据 3.从不同步,效率最高
**缺点:**1.相对于数据文件来说,aof远远大于rdb,修复速度慢于rdb
2.Aof运行效率低于rdb,所以默认为rdb持久化
RDB持久化参数
- 默认有三个策略,可添加
save 900 1 #900秒内 至少有1个key被修改,则进行持久化操作
save 300 10 #300秒内 至少有10个key被修改,则进行持久化操作
save 60 10000 #60秒内 至少有10000个key被修改,则进行持久化操作 - stop-writes-on-bgsave-error yes #持久化失败是否继续工作
- rdbcompression yes #是否压缩rdb文件,需要消耗CPU资源
- rdbchecksum yes #保存rdb文件的时候,进行错误的检查校验
- dir ./ #rdb文件的保存目录
APPEND ONLY模式 持久化参数
-
appendonly no #默认不开启aof模式,因为通常情况下rdb足够使用
-
appendfilename “appendonly.aof” #持久化文件
-
保存策略
#appendfsync always #每次修改都会sync,消耗性能
appendfsync everysec #每秒修改都会sync,可能丢失这1s的数据#appendfsync no #不执行sync,操作系统自己同步数据,速度最快
RDB优点:1.适合大规模的数据恢复 2.对数据的完整性不高
缺点:1.需要一定的时间间隔进行操作。某段时间内宕机,则该时间段内的数据丢失
2.fork进程的时候,会占用一定的内容空间
AOF优点:1.每一次修改都同步,文件的完整性。2.每秒同步一次,可能只丢失一秒的数据 3.从不同步,效率最高
缺点:1.相对于数据文件来说,aof远远大于rdb,修复速度慢于rdb
2.Aof运行效率低于rdb,所以默认为rdb持久化
主从复制,可通过复制多份配置文件进行仿集群
-
配置文件要求端口号,pid文件名,log名,dump.rdb文件名避免相同
-
slave of 主服务器地址 端口号 #配置以哪台服务器为主人
-
slave no one #取消自身从服务器命令
-
info replaction #查看当前主从状态命令
哨兵模式
-
sentinel.conf配置哨兵配置文件,可放在和redis配置文件同目录
#port 默认26379 添加哨兵端口,进行哨兵集群
#sentinel monitor name(命名随意)host port 1(1启动slave进行下一个主机投票模式)
sentinel monitor myredis 127.0.0.1 6379 1
#sentinel auth-pass myredis password(如果有密码需要配置) -
主机宕机后,会重新在从机中选出主服务器,并且原主机在重新连接后,不会获取主机的权限,而是变成了从服务器