Redis配置文件解析
单位[Unit]:bytes
1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 10241024 bytes
1g => 1000000000 bytes
1gb => 10241024*1024 bytes
# 单位是大小写不敏感的,所以 1GB 和 1Gb 是一样的
== include:==
类似于spring的import标签
模块[Modules]:
网络[Network]:
bind ip地址:绑定连接本机redis服务器的redis客户端ip
protected-mode no:如果想从其它机子上的客户端连接本机的redis服务器,必须将该值设置为no
通用配置[General
daemonize yes:设置redis作为后台服务进程启动
日志级别:
debug:适用于开发测试环境
verbose:很少使用
verbose:默认值,适用于生产级别
warning:严重问题使用这个级别
pidfile: 指定pid文件的路径和名称【pid文件里面存了redis 的进程id:pid】
logfile: 指定存放redis服务器产生日志的文件路径和名称,默认把日志信息存到linux系统的/dev/null目录【无底洞】
databases 16:redis默认带了16个库
快照:SNAPSHOTTING
复制:REPLICATION
安全:Security
requirepass 密码:设置密码
auth 密码:身份认证
客户端:CLIENTS
内存管理:MEMORY MANAGEMENT
maxmemory :修改最大内存大小
MAXMEMORY POLICY:当数据量超过redis的内存大小的时候,redis会使用不同的策略来移除redis服务器缓存中的一部分数据
# volatile-lru -> Evict using approximated LRU among the keys with an expire set.
# allkeys-lru -> Evict any key using approximated LRU.\
# volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
# allkeys-lfu -> Evict any key using approximated LFU.
# volatile-random -> Remove a random key among the ones with an expire set.
# allkeys-random -> Remove a random key, any key.
# volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
# noeviction -> Don't evict anything, just return an error on write operations
redis的持久化
方法一
RDB:快照[默认用的就这种]:
持久化策略:
save 900 1
save 300 10
save 60 10000
手动指定redis进行持久化操作:
save:[在后台完成,而且是以同步的方式] 如果是同步的方式这个时候 其他客户端就不能进行操作了
bgsave:【建议使用这种,在后台完成,而且是以异步的方式】 再开一个线程进行存
shutdown:
运维人员:
rdb文件做一个备份
优点:这种速度会快一些
缺点:丢的数据优点多
方法二
AOF: 追加文件
aof日志的全称是append only file,从名字上我们就能看出来,它是一个追加写入的日志文件。
开启Aof:
将appendonly no 设置为appendonly yes即可!
appendfilename "appendonly.aof" 保存的文件名为:appendonly.aof
AOF的持久化策略:
在Redis的配置文件中存在三种同步方式,它们分别是:
appendfsync always #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no #从不同步。高效但是数据不会被持久化。
AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据
修复aof文件:
redis-check-aof --fix appendonly.aof
当RDB和AOF同时存在的时候,Aof的优先级会高一些!
Aof:持久化的频率比较高,丢失的数据比较少!
选择的标准,如果性能要求比较高,就使用RDB方式[默认的],
如果数据一致性要求比较高,就使用AOF的方式
主从复制
作用:读写分离、容灾恢复、备份
具体步骤:
1.配从(库)不配主(库)
2.从库配置:slaveof 主库IP 主库端口
注意:
1.每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件
2.info replication 查看当前节点的状态【主机、从机】
哨兵模式:解决master高可用问题
含义:如果master故障了,在其它的slave节点根据投票数决定由谁从 从库转换为主库
具体步骤:
新建sentinel.conf文件,名字绝不能错
sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6380 1
sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6381 1
上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机
redis-sentinel /usr/common/sentinel.conf
Redis作为消息队列【了解】
必须先订阅再发布
订阅:subscribe c1 c2
发布:publish c1 “hello world”
也可以批量订阅:psubscibe c*
Redis的事务【不太重要】
multi:类似于mysql的begin transaction:开启事务
exec:类似于mysql的commit:提交事务
discard:类似于mysql的rollback:回滚事务