redis杂记-1

1. redis过期时间原理:
  • 消极方法: 对于执行get(key)等命令的时候,判断当前key是否过期,如果过期,则执行删除操作.
  • 积极方法: 周期性的从设置了过期时间的key中挑选一部分,进行删除操作.
    1). 随机测试20个带有timeout信息的key;
    2). 对其中已经过期的key进行删除;
    3). 如果25%的key被删除,则重复执行整个流程;
2. redis持久化操作
· RDB(快照) -Redis Database

1). 当符合某些条件的时候,fork子进程会生成dump.rdb快照文件;
默认配置规则(redis.conf文件中),如下:

savesecondschangesdescribe(描述)
save9001在900s内,有1个key发生变化,生成一次快照
save30010在300s内,有10个key发生变化,生成一次快照
save6010000在60s内,有10000个key发生变化,生成一次快照

2).主动命令生成快照;

	save: 会阻塞所有客户端请求.
  	bgsave: 在后台异步快照,不会阻塞客户端请求.
  	slave: redis从节点发送sync命令后,主节点执行bgsave命令.
  	flushall: 清空整个redis服务器的数据(删除所有数据库的所有key).
  	shutdown: 关闭redis服务器.
  	flushall和shutdown命令,在执行相关操作之前都会执行bgsave操作.
· AOF(添加日志文件) -Append Only File

1 在redis.conf文件中, 修改append only属性, 改为yes,启动即可. 开启后会生成一个 .aof后缀的文件.
2.当AOF开启后,redis重启默认从aof文件中获取数据.
3.aof文件只记录对数据变更的命令操作.

属性(redis.conf文件内)属性值描述
appendonlyno/yesAOF持久化:no:关闭(缺省值)/yes:开启
appendfilenameappendonly.aofaof持久化文件名称(默认appendonly.aof)
appendfsyncalways/everysec/noaof持久化策略
aof持久化策略:
  • always: 同步持久化,每次发生数据变化,会立刻写入磁盘中.性能较差,数据完整性比较好(慢,安全);
  • everysec: 每秒异步记录一次(缺省值);
  • no: 不同步;
aof重写:
  • AOF持久化是通过保存被执行的写命令来记录数据库状态的,所以随着服务器运行时间的流逝,AOF文件中的内容越来越多,文件体积越来越大,如果不加以控制,会对redis服务器甚至宿主计算器造成影响;
  • AOF重写不需要对原有的AOF文件进行任何写入和读取,针对的是redis数据库中键的当前值进行操作;

AOF配置重写触发机制:

属性(redis.conf文件内)属性值描述
auto-aof-rewrite-percentage100aof文件增长率
auto-aof-rewrite-min-size64mbaof文件需要重写的最小字节数(单位:mb)

rewrite操作具体流程:

1). redis fork一个子进程;
2). 子进程基于当前内存中的数据, 构建日志, 开始往一个新的临时AOF文件中写入日志;
3). redis主进程, 接收到client新的写操作之后, 在内存中写入日志, 同时新的日志也继续写入旧的AOF文件;
4). 子进程写完新的日志文件之后, redis主进程将内存中的新日志再次追加到新的AOF文件中;
5). 用新的日志文件替换旧的日志文件;

3. redis内存回收策略
  • 由redis.conf配置文件中的maxmemory-policy属性决定redis内存回收策略;

maxmemory-policy属性值:

maxmemory-policy属性值描述
noeviction当内存使用达到阈值的时候, 所有引起申请内存的命令都会报错
allkeys-lru在所有的键中采用lru算法删除键, 直到腾出足够的内存为止
allkeys-random在所有的键中采用随机算法删除键,直到腾出足够的内存为止
volatile-lru在设置了过期时间的键中采用lru算法删除键,直到腾出足够的内存为止
volatile-random在设置了过期时间的键中采用随机算法删除键,直到腾出足够的内存为止
volatile-ttl在设置了过期时间的键中, 具有更早过期时间的key优先删除
  • lru: 全称:Least Recently Used,即最近最少使用.
  • 思考:如何保证redis中的数据是热点数据? 可以采用redis内存回收策略中的最少使用数据去淘汰.volatile-lru/allkeys-lru
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值