Redis整理
2021-03-08 13:41:32 15 举报
AI智能生成
个人知识总结
作者其他创作
大纲/内容
Redis整理
支持的类型
String
字符类型
get
set
append
数值类型
incr(不接触数据库)
2.点赞系统
bitmaps
语句
setbit
bitcount
bitop
bitpos
hashs
适用于存储对象
list
栈
队列
数组
随机事件
SRANDMEMBER操作正数:取出不含重复的结果集(不会超过已有集)负数:取出重复的结果集
子主题
spop,q取出一个操作
sorted set
用处:设置权重打分等操作
平衡二叉树(AVL树)
左子树的节点深度和右子树节点深度不能相差1
红黑树(特性)
1.根节点只能是黑色
2.叶子节点(NIL)只能是黑色
5.从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。[这里指到叶子节点的路径]
内存淘汰策略
LRU
最近未被使用过
TTL
random
随机清除(不推荐)
noeviction
过期键删除问题
定时过期
惰性过期
定期过期
每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。(每隔100ms部分key检查一次)(expires字典会保存所有设置了过期时间的key的过期时间数据,其中,key是指向键空间中的某个键的指针,value是该键的毫秒精度的UNIX时间戳表示的过期时间。键空间是指该Redis集群中保存的所有键。)Redis中同时使用了惰性过期和定期过期两种过期策略。
服务拓展
AKF原则
集群
目的
达到线性可扩展性、可用性、数据一致性
解决读写分离以及支持更多的负载
模式
主从模式
采用奇数
一般至少三个哨兵进行监控
特点及作用
工作原理
1.每个sentinel以每秒钟一次的频率向它所知的master,slave以及其他sentinel实例发送一个 PING 命令
2.如果一个实例距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被sentinel标记为主观下线。
3.如果一个master被标记为主观下线,则正在监视这个master的所有sentinel要以每秒一次的频率确认master的确进入了主观下线状态
4.当有足够数量的sentinel(大于等于配置文件指定的值)在指定的时间范围内确认master的确进入了主观下线状态, 则master会被标记为客观下线
5.在一般情况下, 每个sentinel会以每 10 秒一次的频率向它已知的所有master,slave发送 INFO 命令
6.当master被sentinel标记为客观下线时,sentinel向下线的master的所有slave发送 INFO 命令的频率会从 10 秒一次改为 1 秒一次
7.若没有足够数量的sentinel同意master已经下线,master的客观下线状态就会被移除; 若master重新向sentinel的 PING 命令返回有效回复,master的主观下线状态就会被移除
Cluster模式
特点
分片规则
2.Redis集群预分好16384个桶,当需要在 Redis 集群中放置一个 key-value 时,根据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中
优点
1.数据按照 slot 存储分布在多个节点,节点间数据共享,可动态调整数据分布;
2.部分节点不可用时,集群仍可用。通过增加 Slave 做 standby 数据副本,能够实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave 到 Master 的角色提升
缺点
2.数据通过异步复制,不保证数据的强一致性
基本介绍
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
持久化操作
RDB模式(默认)
原理
弊端
操作
save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。
AOF模式
优势
日志文件结构清晰
劣势
IO写入次数多
恢复速度慢
appendfsync always #每次有数据修改发生时都会写入AOF文件。appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。appendfsync no #从不同步。高效但是数据不会被持久化。
事务
如何保证数据库与redis的双写一致性
缓存异常问题
缓存击穿
使用分布式锁
setnx操作
缓存穿透
允许redis空值存储
缓存雪崩
意思就是大面积的key值失效
分散key的过期时间,给某个key的缓存时间加一个随机值
缓存降级
为什么读取这么快
网络IO模型(之后更新)
0 条评论
回复 删除
下一页