啥是Redis
简言化之:非关系型数据库,一种K-V存储结构数据库
数据结构
-
字符串 String
长啥样👉:set key value,一般用来存图片,序列化对象等 -
列表 List
长啥样👉:lpush(rpush) name value -
集合 Set
长啥样👉:sadd name value,String类型的无序集合,复杂度都是O(1) -
散列 hash
长啥样👉:hmset name key1 value1 key2 value2,存储对象 -
有序集合 Zset
长啥样👉:zadd name score value,分数可以重复,而键不可重复
应用场景
- 缓存会话(单点登录)
- 分布式锁
- 各种排行榜或计算器
- 商品列表或用户基础数据列表
- 使用list作为消息队列,秒杀,库存扣减等等
Redis持久化
把内存的数据写到磁盘中,防止服务宕机导致数据丢失
redis存储结构:内容是redis通讯协议(RESP)格式的命令文本存储
持久化机制
-
RDB(默认)
全称:Redis DataBase
功能核心函数:rdbSave(生成RDB文件)、rdbLoad(从文件加载到内存) -
AOF
全称:Append-only file
服务器定时任务或函数执行时flushAppendOnlyFile()函数都会被调用
write():根据条件,将aof_buf中的缓存写入到AOF文件
save():根据条件,调用fsync或fdatasync函数,将AOF文件保存到磁盘中
相比一下
aof更新频率高,更安全
而rdb性能更好
RESP协议
redis中客户端和服务端的一种通讯协议
特点:实现简单,快速解析,可读性好
Redis分布式锁
先拿setnx来争抢锁,抢到后用expire给锁加一个过期时间,用来防止锁忘记释放
两个问题
缓存穿透,缓存雪崩