文章目录
redis数据类型
String (字符串,整数和浮点数)
List (队列,先入先出)
Hash (具有String key和String value的map容器,可以将多个key-value存储到一个key中)
Set (无序不可重复)
Sort Set (有序不可重复)
redis数据同步
redis 和 DB 同步
简单实现:
1.读取数据时:redis有有效缓存,取缓存。redis无缓存,取DB,并放入缓存一份;
2.修改数据时:修改DB,删除旧的缓存;
相对完善实现:
1.延时双删;
redis 主从同步
redis淘汰/回收策略
淘汰/回收策略 | 方式 |
---|---|
volatile-lru | 从设置了过期时间的数据中,淘汰最近最少使用的数据 |
volatile-random | 从设置了过期时间的数据中,随机淘汰数据 |
volatile-ttl | 从设置了过期时间的数据中,淘汰即将过期的数据 |
allkeys-lru | 从所有数据中,淘汰最近最少使用的数据 |
allkeys-random | 从所有数据中,随即淘汰数据 |
no-enviction | 禁止淘汰数据 |
redis持久化
RDB | AOF | |
---|---|---|
持久化方式 | Redis DataBase,某个时间点的全量数据备份 | Append-Only File,只保存reids的每次修改、添加操作命令 |
持久化命令 | save、bgsave、自动化 save xx xx | always、everysec、no |
容灾性 | 容灾性好,只有一个drump.rdb文件 | |
效率 | IO最大化,fork子线程做持久化;启动大量redis数据,效率比AOF高 | 文件过大时,可进行AOF重写 |
安全性 | 安全性低,隔一段时间进行持久化,数据易丢失 | 安全性好,最多丢失1s数据 |
redis分布式存储(高可用)
主从 Master-Slave (读写分离)
哨兵 Sentinel (主从自动切换)
集群 Cluster (解决内存冗余)
redis集群切片
客户端hash分片
中间件hash分片
客户端服务器hash分片
redis 雪崩、击穿、穿透
描述 | 解决 | |
---|---|---|
穿透 | 穿过Redis和DB,查询一个没有的值 (缓存和数据库都没有数据) | 缓存空值(占内存,性能低)、布隆过滤器 |
击穿 | 定点打击一个缓存失效的key (缓存没有数据,数据库有数据) | 热点数据不过期、互斥锁 |
雪崩 | 单机宕机或多个key同时失效 | 热点数据不过期、有效时间随机 |
参考文档
Redis 5种类型、常用方法、应用
Redis的两种持久化RDB和AOF(超详细)
Redis 主从、哨兵、集群
Redis 穿透、雪崩、击穿
添加链接描述