redis知识点总结

145 阅读3分钟

1.基础: 1.1基本数据类型:string,hash,list,set,sortedSet;Bitmaps,HyperLogLogs,GEO

String:解决缓冲区溢出问题;采用预分配空间机制,和惰性释放空间来解决内存重分配问题;二进制安全;保存字符串长度字段,不用遍历可以拿到字符串长度;底层是SDS动态字符串实现,最多512M;

List:底层数据结构为链表linkedlist和压缩列表ziplist,数据量不大使用ziplist(类似数组,节点保存节点的长度值方便找到下一个位置),否则使用链表linkedlist(双向链表)

Hash:底层数据结构:字典和压缩列表,渐进式rehash可以减缓扩容耗时的情况

Set:底层数据结构为整数集合或者字典

Zset:底层数据结构是压缩列表和跳跃表,redis的跳表最多有32层

1.2优点;Redis 将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快

1.3单机QPS:10W

1.4采用单线程-多路复用IO模型的工作方式,避免了上下文切换的消耗,不存在加锁释放锁操作

1.5 RDB和AOF的: RDB的SAVE和BGSAVE,SAVE是阻塞持久化,BGSAVE是非阻塞式持久化,RDB的持久化有一定频率,针对于重要数据,最好用AOF持久化方式 AOF保存针对于redis的写命令,AOF比RDB文件更大(RDB保存的是数据),重写机制减少AOF文件的大小 区别 1)RDB恢复容易,启动快 2)RDB可能会丢失数据,而AOF不会 3)RDB对redis的性能影响逼AOF低

1.6持久化实战:

1)最安全的做法是RDB与AOF同时使用,即使AOF损坏无法修复,还可以用RDB来恢复数据,当然在持久化时对性能也会有影响。 2)Redis当简单缓存,没有缓存也不会造成缓存雪崩只使用RDB即可。 3)不推荐单独使用AOF,因为AOF对于数据的恢复载入比RDB慢,所以使用AOF的时候,最好还是有RDB作为备份。 4)采用新版本Redis 4.0的持久化新方案,混合型,RDB存储执行重写之前的数据,重写之后的数据AOF格式存储

==============

redis 内存回收机制

1.过期策略: .定时删除 .定期删除 .惰性过期 redis采用定期删除和惰性删除

2.淘汰策略:(当内存使用到达用户设置的域值) .volatile-lru:淘汰设置了过期时间的数据中的最近最少使用的数据 .volatile-ttl:淘汰设置了过期时间数据中的即将要过期的数据 .volatile-random:随机淘汰设置了过期时间数据中的数据 .allkeys-lru: 从所有数据中找到最近最少使用的数据进行淘汰 .allkeys-random:从所有数据中随机淘汰数据 .noenviction:禁止淘汰数据

================================

redis 持久化方式

1.RDB持久化:数据体积小,对性能影响小,恢复数据快,缺点:(指定的时间间隔内将内存中的数据集快照写入磁盘)不能做到实时持久化可能会丢掉数据, 2.AOF持久化:缺点是文件大,恢复速度慢,对性能影响大,不会丢数据,(以日志的形式记录服务器所处理的每一个写、删除操作,使用重写尽量减少文件大小)

=========

redis架构模式 1.单机:容量有限,无法高可用

2.主从复制:主服务器执行写操作,从服务器执行读操作,还是没有做到高可用,单机写的压力还是没有解决

3.Redis sentinel 哨兵模式:Sentinel会不断地检查你的主服务器和从服务器是否运作正常,如果发现主服务器故障,还会做故障自动迁移,解决了高可用问题,单机的写压力还是存在