Redis
Redis 存储类型、事务基本操作、乐观锁、持久化、订阅发布、缓存穿透和雪崩。
Redis 存储类型
String、[SET,SETNX,SETEX,STRLEN,SETRANGE,GETRANGE]
List、[LPUSH,RPUSH,LPOP,RPOP]
Set、[SADD,SPOP,]
Hash、[HSET,HGET,HKEYS,HVALS]
Zset、[ZADD,ZSCORE(判断key是否存在),ZINCRBY,]
Geospatial、[GEOADD,GEOPOS,GEODIST]
Hyperloglog、[PFADD,PFCOUNT,PFMERGE]
Bitmap、[SETBIT,GETBIT,BITPOS,BITOP]
事务基本操作
开启事务[multi]
命令入队
执行事务[exec]
放弃事务[discard]
redis事务不保证原子性,语法错误会失败,运行错误不会失败。
乐观锁
[watch]监视器实现乐观锁
持久化、指定时间里,讲内存中的数据集体写入磁盘,创建快照。fork一个子进程来实现。 默认RDB 一般不修改,缺点就是最后一次肯能丢失。比AOF更加高效
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
appendfsync always #每次有数据修改发生时都会写入AOF文件。
appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no #从不同步。高效但是数据不会被持久化。
订阅发布
[psubscribe] 订阅一个或多个给定模式的频道
[pubsub] subcommand 查看订阅与发布状态
[publish] channel message 讲信息发送到指定频道
[punsubscribe] 退订所有给定模式的频道
[subscribe] 订阅给定的一个或多个频道
[unsubscribe] 退订给定频道
[info] replication 查看redis状态
集群搭建、主从复制、哨兵模式、
1、单机版
2、主从复制
3、哨兵模式
4、
缓存穿透和雪崩
1、缓存穿透(读不到数据,一直读)
布隆过滤器。
redis中存入空的缓存。
2、缓存击穿(对某一个key数据 读取量高,缓存过期,空档期直接击穿底层数据库)
上层对于查询key的时候可以单线程查询。
热点数据不过期
Redis的分布式锁??
分布式锁,setnx
SET key value [EX seconds] [PX milliseconds] [NX|XX]
3、缓存雪崩 双十一:
停掉一些服务(保证主要服务可用),多增几台redis(异地多活)
限流降级
数据预热
Redis 过期策略及内存淘汰机制
过期策略
过期策略:-> 定期删除+惰性删除
内存淘汰机制
volatile-lru: 从已设置过期时间的数据集( server.db[i].expires ) 中挑选最近最少使用的数据淘汰。
volatile-ttl: 从已设置过期时间的数据集( server.db[i].expires ) 中挑选将要过期的数据淘汰。
volatile-random: 从已设置过期时间的数据集( server.db[i].expires ) 中任意选择数据淘汰。
allkey-lru: 从数据集( server.db[i].dict ) 中挑选最近最少使用的数据淘汰。
allkey-ramdom: 从数据集( server.db[i].dict ) 中任意选择数据淘汰。
no-enviction(驱逐): 禁止驱逐数据。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步