缓存介绍以及应用场景

您所在的位置:网站首页 缓冲技术的工作原理和主要应用场合 缓存介绍以及应用场景

缓存介绍以及应用场景

2024-07-10 13:59| 来源: 网络整理| 查看: 265

1,什么是缓存,缓存的作用是什么? (1)缓存是数据交互的缓冲区域,简称cache,当某一个硬件想要读取数据是,会首选从缓存中获取数据,有则直接执行,或者返回,如果没有,去内存中获取。缓存的数据比内存的数据快很多。所以缓存的作用就是让硬件更快速的运行 缓存基本上都是RAM,即断电即掉的非永久性存储,所以一般使用完后后,会将数据写入内存中去。 高速缓存猪主要是用来协调CPU和朱村之间的存取速度的差异而设计的。一般CPU工作速度高,而存储工作速度低,为了解决这个问题,通常使用高速缓存。一般高速缓存的速度在于CPU和内存之间。 (2)缓存的作用 缓存在不同场景下作用不一样 操作系统磁盘缓存————》减少磁盘机械操作 数据库缓存————》减少对数据库的查询 Web服务器缓存————》减少对应用服务器的请求。 客户端浏览器缓存————》减少对网站的访问。 2,常见的缓存有哪些?如何做到数据库与缓存中的数据一致。 (1)由于不同系统的数据访问模式不同,同一种缓存策略很难在不同的场景下取得满意的性能。缓存的策略有 1)基于访问时间:LRU,此类算法按照访问时间来组织缓存队列。决定替换对象。 2)基于访问频率:LFU/LRU2/2Q, 3)基于时间和访问频次:FBR,LRUF,ALRUF,此类算法有一个可调或自适应参数,通过该参数的调节缓存策略在两个之间取得一个平衡 4)基于访问模式:有些应用有着明确的数据访问特点,进而产生与其相适应的缓存策略。 (2)缓存数据不一致产生的原因 1)先操作缓存,再写数据库成功之前,如果有读数据请求发生,可能导致旧数据入缓存,在分布式环境下数据的读写都是并发的,如果一个服务多台机器部署,入如果不采用缓存过期时间测录,该数据永久都是脏数据。 解决办法: 1,采用更新前后双删除缓存策略 2,采用串行化解决,保证同一个数据的读写落在同一台服务器上。 2)操作数据库,然后清除缓存,如果缓存清除失败。就会出现不一致的情况 解决办法:将删除失败的KEY存在消息队列中重复删除。(对业务线代码造成大量入侵,) 通过订阅binlog获取需要重新删除的key的数据,在应用程序中,另起一段程序,获得这个订阅程序传递过来的消息,进行删除缓存操作。 3,如何防止缓存穿透,缓存击穿,缓存雪崩么,和缓存刷新 (1),缓存穿透:是指收到一个请求,这个请求不在缓存中,需要去数据库查询,然后放进缓存,但是同时有很多请求同时过来的时候,访问同一个数据,业务请求会吧所有的都发给数据库,或者构成逻辑上不存在的数据,然后大量发送这个请求到数据库,每次都这样,导致数据库崩溃或者挂掉 解决方案:(1)对于恶意攻击一般都直接将请求拦截。不发送数据给数据库 (2)缓存空结果,及是查询不存在的对象缓存一个空结果。就可以减少对数据库的查询次数。 (2),缓存击穿: 某个数据没有,然后好多请求查询数据库,可以归为缓存击穿的范畴:对于热点数据,当缓存失效的一瞬间,所有的请求都被下放到数据库去请求更新缓存,数据库被压垮。 解决思路:(1)添加全局锁,访问某个数据添加共享锁,获得锁的现成才有资格去访问数据库,其他的只能等待。如何redis的全局锁,redis.setnx() (2),对即将过期的数据进行主动刷新缓存 (3),缓存雪崩 同一时间,缓存设置了相同时间,导致大量缓存数据在同一时间过期。瞬间很多数据库请求发向后,导致数据库挂了。 解决方案:分治,划分更小的缓存区间,按照区间,给每一个缓存设置不同的过期时间,设置不同的缓存过期时间,随机亦可以,达到错峰刷新缓存的效果。 (4),缓存刷新 即是在新增,更新或者删除的时候杀心缓存,如果不执行就会出现脏数据,当缓存请求系统崩掉后,仍然可以返回为null

4,redis 和 memcached 1,区别:redis数据结构更丰富。支持集群,小数据时,使用redis更好 2,redis线程模式为单线程,纯内存操作。基于非阻塞的IO多路复用机制,单线程避免频繁切换上下文。 3,数据模式 String key value, 主要场景,生成主键,存储用户信息,计数器 hash :类似于map, list:有序列表,存储一些列表的数据结构,如关注的纪念馆等。文章评论列表。 set :无序集合不重复集合,比如计算两个的共同好友 sort set :有序集合。zset(xxx,xxx,103) 5,redis的过期策略 定期删除和惰性删除 每隔一百秒随机抽取一些key, 惰性删除,是获取的时候,如果这个已经过期则执行删除造作返回null 6,redis主从框架保证高并发 一主多从,主节点负责写数据,数据复制到其他从节点上去。从节点负责读取数据,可以轻松实现水平扩展,支持高并发, 复制机制,Redis利用异步方式,将数据复制到 slave 一个master 可以配置多个 slave,slave 可以链接其他的slave,slave复制时不会blockmaster工作,slave复制时不会block自己的数据付只完成后会删除旧的数据,重新加载新数据 主从复制的时候,slave会发送一个 异步请求给 master节点,出发 full resysnchronization方法,生成快照。 哨兵:1,检查master和slave的运行状态,2,如果master出现问题 slave会自动升级MASTER

Redis集群的原理, Redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放一部分数据 提供内置的高可用支持,部分master不可用时,还是可以继续工作的 支撑N个redis master node,每个master node都可以挂载多个slave node 高可用,因为每个master都有salve节点,那么如果mater挂掉,redis cluster这套机制,就会自动将某个slave切换成master   如果你的数据量很少,主要是承载高并发高性能的场景,比如你的缓存一般就几个G,单机足够了   replication,一个mater,多个slave,要几个slave跟你的要求的读吞吐量有关系,然后自己搭建一个sentinal集群,去保证redis主从架构的高可用性,就可以了  redis cluster,主要是针对海量数据+高并发+高可用的场景,海量数据,如果你的数据量很大,那么建议就用redis cluster

7.Redis持久化的方案 AOF AOF持久化(即Append Only File持久化),是将Redis执行的每次写命令记录到单独的日志文件中(有点像MySQL的binlog);当Redis重启时再次执行AOF文件中的命令来恢复数据。与RDB相比,AOF的实时性更好,因此已成为主流的持久化方案。 RDB持久化方式 RDB持久化把当前进程数据生成快照(.rdb)文件保存到硬盘的过程,有手动触发和自动触发两种方式;



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3