Redis
redis相关的一些知识
zw791029369
to be or not to be
展开
-
redis基础知识、线程模型
redis支持的数据类型 String(字符串类型) Hash(哈希类型) List(列表类型) Set(集合类型) ZSet(有序集合类型) redis的线程模型 redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据socket上的事件类型来选择对应的事件处理器进行处理 (反应器模式)。 文件事件处理器原创 2020-11-08 17:00:02 · 87 阅读 · 0 评论 -
redis的过期策略与内存淘汰机制
redis的过期策略 redis的过期策略是定期删除+惰性删除 定期删除 redis每隔一段时间(默认是100ms)就随机抽取一些设置了过期时间的key,检查其是否过期,过期则删除。之所以是随机抽取而不是全部遍历所有设置过期时间的key,是因为当设置过期时间的key特别多的情况下,如果全部遍历的话将耗费大量的时间与性能,一首凉凉送给你… 如果只使用定期删除的话还会出现一个问题,由于是随机抽取设置过期时间的key,可能会导致很多key虽然到了时间,但是还没有被随机抽取到,结果还没有被删除掉。所以针对这原创 2020-11-08 16:59:27 · 103 阅读 · 0 评论 -
redis的持久化及优缺点
redis如果将数据仅缓存在内存里面,一旦redis挂了重启,数据就全部丢失了,像RabbitMQ一类的针对这种情况都提供了持久化机制,当然redis肯定也是有自己的持久化机制。 redis提供了两种持久化方式 RDB:对redis中的数据执行周期性的持久化(默认存储到dump.rdb文件) //参考配置 save 900 1 #900秒内如果至少有1次key发生了变化,就执行持久化 save 300 10 #300秒内如果至少有10次key发生了变化,就执行持久化 save 60 10000 #原创 2020-11-08 16:58:48 · 687 阅读 · 0 评论 -
redis缓存雪崩、穿透、击穿现象及解决方案
缓存雪崩 现象 缓存服务全部崩溃(机器宕机等原因),数据请求全都落到数据库上,导致数据库也崩溃 解决方案 事前:保证redis高可用性,可采用主从+哨兵,redis cluster,避免全盘崩溃 事中:采用本地缓存(ehcache)和限流组件(hystrix) 事后: redis持久化机制,尽快恢复缓存集群,一旦重启,自动从磁盘上加载数据,恢复内存中的数据 缓存穿透 现象 大量的请求没有命中缓存数据,直接打入了数据库,并且数据库中也没有对应的数据 解决方案 从数据库中查询时只要没有查到,原创 2020-11-08 16:58:23 · 118 阅读 · 0 评论 -
redis缓存、数据库双写不一致
Cache Aside Pattern模式 读的时候 先读缓存,缓存没有的话,再读取数据库,然后取出数据后放入缓存,同时返回响应 更新的时候 先删除缓存,然后再更新数据库(之所以删除缓存而不是更新,其实是一个懒加载的思想,避免频繁更新,降低开销) 缓存、数据库双写不一致 场景1: 先修改数据库,再修改/删除缓存,如果修改/删除缓存失败了,导致数据库中是新数据,缓存中是旧数据,数据出现不一致 解决思路 先删除缓存,再修改数据库,如果修改数据库失败,那么数据库中是旧数据,缓存中是空的,也不会存在不一致原创 2020-11-08 16:56:20 · 201 阅读 · 0 评论