热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Redis缓存全面解析?

Redis缓存-全面解析Redis是什么redis是一个开源的单核内存存储(key-value)数据库。使用场景:1、缓存数据对于经常

Redis缓存-全面解析


Redis是什么

redis是一个开源的单核内存存储(key-value)数据库。
使用场景:
1、缓存数据
对于经常使用的变更不多的数据
2、消息队列
相当于消息订阅系统,比如ActiveMQ、RocketMQ。如果对数据有较高一致性要求时,还是建议使用MQ)
3、计数器
对于统计点击率、点赞率、redis原子性、都可以使用redis,避免并发发生
4、电商网站首页信息
官网的首页数据
5、热点数据
对于新闻网站的实时热点、热搜的数据,

redis做缓存为什么执行速度很快?
1、redis 是内存操作
2、redis的单线程
3、redis的数据结构简单、对数据的操作也简单
4、redis使用的底层模型不同,他们之间底层实现方式以及客户端之间的通信的协议不一样,redis直接自己构建VM机制,节约了系统调用函数的请求时间
5、使用多路I/O复用模型,非阻塞I/O
redis数据存储类型
String、hash、list、set(自动排重)、zset


Redis缓存的数据一致性

redis和数据库的数据不一致,
解决方案:
1、先写数据库,再写缓存(小型项目)
2、并发问题产生脏数据:导致数据不一致
解决脏数据不一性:
1、并发率小的数据、缓存数据更新使用过期时间,每隔一段时间更新一下缓存
2、并发高的基础数据。使用cannal订阅binlog的方式
3、通过加锁保证并发读写,写的时候按照顺序排队
Redis的过期和内存淘汰
redis的过期删除采用的是定期删除、默认每隔100ms检测一次,遇到过期的key就进行删除、这个检测是随机的检测,随机删除可能会出现删除不完的情况,所以redis再读写的时候采用了惰性删除策略(再请求key的时候去检测是否过期,过期就删除),来解决

redis高并发条件下经常会出现:缓存击穿,缓存穿透,缓存雪崩


缓存击穿

缓存击穿实质上就是缓存中没有数据,不断的请求db,
解决方案:
1、互斥锁
允许一个线程重建缓存,其他线程处于等待重建缓存的线程;当第一个数据库请求发起以后,将缓存请求上锁,其他查询请求查询到该位置的时候处于堵塞等待;等待一个请求完成数据库查询,并将数据更新值存入缓存以后释放锁;存在的问题:请求会处于阻塞等待,系统的吞吐量下降;
2、永不过期,
由于没有设置过期时间就不会出现数据丢失的情况,但是会存在数据不一致的情况。


缓存穿透

缓存穿透实质就是缓存中不存在数据,数据库也不存在,但请求会一直访问db
缓存穿透的危害:海量的请求查询压根不存在,这时候海量的数据全都落在数据上对数据库的压力剧增,可能会导致系统崩溃
缓存穿透的产生的原因:
1:黑客攻击
2:代码逻辑错误
解决方案:
1.将数据库查询的结果为空的key存储到缓存中,后续又出现的查询请求直接返回null;
2.避免缓存穿透的方式即为使用BloomFilter


缓存雪崩

缓存雪崩是因为一些原因发生宕机,原来可以抵挡缓存的海量数据全都请求数据库,数据库扛不住压力,导致崩溃
解决方案:
1、缓存集群,保证缓存高可用(需要了解一些哨兵sentinel)
2、使用hystrix(熔断、降级、限流)

下一期讲述memcached


推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了python面试题——数据库和缓存(46题)相关的知识,希望对你有一定的参考价值。1、列举常见的关系型数据库和非关系型都有那些? ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 开发笔记:Memcached高性能内存对象缓存系统
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Memcached高性能内存对象缓存系统相关的知识,希望对你有一定的参考价值。一、Memcached概述 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • 旁路|发生_Day749.旁路缓存:Redis是如何工作的Redis 核心技术与实战
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Day749.旁路缓存:Redis是如何工作的-Redis核心技术与实战相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 消息中间件RabbitMQ 高级特性之消费端ACK与重回队列
    什么是消费端的ACK和重回队列?消费端的手工ACK和NACK消费端进行消费的时候,如果由于业务异常我们可以进行日志的记录,然后进行补偿如果由于服务器宕机等严重问题 ... [详细]
  • celery 爬虫使用
    简介celery是一个基于分布式消息传输的异步任务队列,它专注于实时处理,同时也支持任务调度。它由三部分组成,消息中间件, ... [详细]
  • 数据库基本介绍
    1、数据库基本知识概念:数据库:database(DB),是一种存储数据的仓库数据库是根据数据结构组织、存储和 ... [详细]
  • 架构师必读:日均500万数据,如何进行数据存储选型?
    点击上方关注我,选择“置顶或者星标”作者:麦田里的老农来源:https:zhuanlan.zhihu.comp37964096小编公司有一 ... [详细]
  • 相对于内存来说,磁盘的容量是非常大的,所以Linux内核实现了一个叫 内存交换 的功能--把某些进程的一些暂时用不到的内存页保存到磁盘中,然后把物理内存页分配给更紧急的用户使用,当 ... [详细]
  • Redis通用指令及数据库操作详解
    本文详细介绍了Redis中的通用指令,包括key的基本操作、扩展操作和查询模式,以及数据库的基本操作和相关操作。同时还解决了key重复问题,并提供了解决方案。文章内容参考了黑马Redis教程。 ... [详细]
author-avatar
spring709272032
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有