Redis原理与应用设计
2023-12-24 12:40:27
Redis引入:
缓存在内存中存储,高效的查询性能
Redis的原理:
Redis采用多路复用原理,单线程或者多线程处理客户端请求,I/O读写操作一直是单线程,写入内存中速度快,因此单线程也能处理更多的请求。一般存储Map,List,Set这样的数据
不丢失数据:
将缓存中的数据存一份到磁盘中,重新启动Redis就会恢复缓存中的数据。
备份的方式
AOF日志方式:
缓存命令执行成功后,将日志写入到磁盘中,阻塞操作,容易丢失数据,但能避免数据错误
RDB快照方式:
某一时刻将缓存变化的值存成一个副本写入磁盘中
Redis高可用:
**主从复制,**读写分离;
**哨兵模式,**主Redis宕机后从Redis自动变成Master节点,
**集群模式:**多节点部署,去中心化,提高查询效率
引出的问题:
1.缓存穿透:
数据库与redis都没有的数据,每次请求都会进行两次查询。
设置空值缓存,第一次查询是空值缓存仍然进行缓存,设置较短的过期时间,后续的查询遇到空值就会返回;进行非法请求的参数校验。
2.缓存击穿:
大量客户端请求查询同一条在Redis没有的数据,会到数据库进行查询,并发量增加,数据库压力变大。
设置SetNx一个状态值,客户端最先请求时在Redis设置状态值,进行加锁,请求在redis不存在,在数据库中查询,将查询结果返回至redis缓存中,状态值改变,剩余所有的请求查询redis缓存就可以。
3.缓存雪崩:
redis缓存设置过期时间一致,某一时刻所有的请求都在同一时刻失效,所有请求都通过数据库来查询。
设置过期时间+随机数防止同一时刻所有请求都过期失效
文章来源:https://blog.csdn.net/ks_13815436529/article/details/135123164
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!