笔记:Redis

Redis笔记


存储机制

Snapshot & AOF

Snapshot

将Data先存于内存,当数据累计达到某些给定的阈值,触发一次dump操作,将变化的Data一次性写入数据库文件(RDB文件)

AOF

-将Data先存内存,同时调用fsync来完成对本次写操作的日志记录,此日志揭露文件其实是一个基于Redis网络文件协议的文本文件

-AOF调用fsync也不是说全部无阻塞,在某些系统上可能出现fsync阻塞进程,但可以通过配置修改过来

-AOF关键配置:关于调用fsync追加日志的频率
两种频率设置:always、everysecond

以追加日志的方式持久化Data

存储模式性能 & 安全性比较

性能

Snapshot性能 > AOF

Snapshot:
1、采用二进制方式存Data,数据文件小,加载快
2、保存时,按照配置中的save策略存储
3、每次都是聚合很多数据批量存储,写入效率高

AOF:
1、实时模式/定时模式
2、存储频率高,效率低

安全

AOF > Snapshot

Snapshot:
1、基于累计批量思想,累计越多,写入效率越高
2、但若长时间不写入RDB,一旦Redis崩溃,数据丢失

AOF:
1、配置存储频率,可以最小化崩溃损失、高恢复率

Rewrite

AOF按照记录日志方式工作
日志不断扩大
Redis会根据配置合理触发Rewrite

Rewrite:
1、将日志文件中的所有Data都重写到另一个日志文件
2、重写时,对老日志文件中同一Key的多次操作,只保留最终值得那次操作记录到日志

内存优化

Redis内部有很多数据类型

1、数字 & String
存储“123”自动识别为数字,按数字存,节约空间

Redis内部会构建一个“数字池”,默认10000
数字池:
1)大小可配置
2)池中数字直接引用

2、复杂类型存储优化
1)Map、List、Set等集合特点为可大可小,查询复杂度O(1)
2)Redis内部采用紧凑格式存储(节约空间,毕竟是内存数据库),查询复杂度O(n)
紧凑格式代表:ZIPMAP

特点

高性能的 Key-Value DB

与其他 Key-Value 缓存产品比较的特点:
1)支持数据持久化,可将内存数据存磁盘,重启时再加载使用
2)支持List、Set、Zset、Hash等数据结构
3)支持数据备份,即 mater-slave 模式数据备份

Redis优势

1、性能极高
能读的速度=110000次/s
能写的速度=81000次/s

2、丰富的数据类型
支持二进制案例的 Strings、lists…

3、原子操作

Redis管道技术

可以在服务器相应时,客户端继续向服务器发请求,并最终一次性读取服务器端的响应

管道技术提升了Redis服务性能

Redis分区

是分割Data到多个Redis实例的处理过程
每个实例只存储key的一个子集

1、分区优势
1)利用多台计算机的内存 & 值,允许构造更大的DB
2)通过多核 & 多计算机,允许扩展计算能力
3)通过多计算机和网络适配器,允许扩展网络带宽

2、分区劣势
1)多Key操作通常不支持
例如不同实例上的Set无法求交
2)多Key事务不支持
3)数据处理复杂
4)增删复杂

Java使用Redis

确保安装了Redis服务 & Java Redis驱动

Redis事务

三个阶段:开始事务 > 命令入队 > 执行事务

Redis脚本

其脚本用Lua解释器执行脚本

补充

-阻塞相关:sleep、suspend/resume、wait/notify

-通讯的集中方式:
1)管道
2)socket
3)共享内存

-java进程间通信:
java没有共享内存机制,管道只能用于java线程间通信

-管道:
把程序的输出直接连到另一个程序的输入
单向,FIFO
1)有名管道:父子进程间
2)无名管道:任意两个进程间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值