缓存相关
文章平均质量分 68
暮光911
这个作者很懒,什么都没留下…
展开
-
JedisPool的testOnBorrow、testOnReturn和testWhileIdle参数的实现原理
前言我们平时使用jedispool来连接Redis的集群、sentinel或者主从服务器,经常会遇到testOnBorrow、testOnReturn和testWhileIdle这些参数的设置问题,我们知道连接Redis服务器的连接是维护在通用对象池中的,如果想要正确的、符合自己业务场景的设置这些参数,需要了解其底层原理。Jedispool和genericObjectPool的关系我们翻到j...原创 2019-12-17 19:18:40 · 8784 阅读 · 2 评论 -
数据库主从不一致的处理方案
在聊数据库与缓存一致性问题之前,先聊聊数据库主库与从库的一致性问题。问:常见的数据库集群架构如何?答:一主多从,主从同步,读写分离。如上图:(1)一个主库提供写服务(2)多个从库提供读服务,可以增加从库提升读性能(3)主从之间同步数据画外音:任何方案不要忘了本心,加从库的本心,是提升读性能。问:为什么会出现不一致?答:主从同步有时延,这个时延期间读从库,可能读到不一致的数据。...转载 2019-11-05 20:11:00 · 393 阅读 · 0 评论 -
缓存与数据库不一致的问题
一、数据库主从不一致先回顾下,无缓存时,数据库主从不一致问题。如上图,发生的场景是,写后立刻读:(1)主库一个写请求(主从没同步完成)(2)从库接着一个读请求,读到了旧数据(3)最后,主从同步完成导致的结果是:主动同步完成之前,会读取到旧数据。可以看到,主从不一致的影响时间很短,在主从同步完成后,就会读到新数据。二、缓存与数据库不一致如上图,发生的场景也是,写后立刻读:(1...转载 2019-11-05 19:56:57 · 202 阅读 · 0 评论 -
缓存,究竟是淘汰,还是修改?
允许cache miss的场景,不管是memcache还是redis,当被缓存的内容变化时,是改修改缓存,还是淘汰缓存?这是今天将要讨论的话题。问:KV缓存都缓存了一些什么数据?答:(1)朴素类型的数据,例如:int(2)序列化后的对象,例如:User实体,本质是binary(3)文本数据,例如:json或者html(4)…问:淘汰缓存中的这些数据,修改缓存中的这些数据,有什么差别?...转载 2019-11-04 20:07:02 · 117 阅读 · 0 评论 -
缓存的误用
误用一:把缓存作为服务与服务之间传递数据的媒介如上图:服务1和服务2约定好key和value,通过缓存传递数据服务1将数据写入缓存,服务2从缓存读取数据,达到两个服务通信的目的该方案存在的问题是:数据管道,数据通知场景,MQ更加适合多个服务关联同一个缓存实例,会导致服务耦合误用二:使用缓存未考虑雪崩常规的缓存玩法,如上图:服务先读缓存,缓存命中则返回缓存不命中,再读...转载 2019-11-04 19:57:04 · 98 阅读 · 0 评论 -
使用RedisTemplate配合lua脚本实现分布式锁
使用RedisTemplate配合lua脚本实现分布式锁目前业内常用的分布式锁的实现方式主要有以下几种:基于Redis的分布式锁基于zookeeper的分布式锁基于数据库的锁,如果是更新操作可以考虑乐观锁,如果是插入操作可以考虑在某些字段上建立唯一索引(这里展开说一下,前几天和架构师聊天,如果遇到无法为单一字段建立唯一索引的业务场景,那还可以考虑联合其他字段,建立联合唯一索引,变相使...原创 2018-09-08 16:58:52 · 10649 阅读 · 9 评论