如何保证缓存和数据库的双写的一致性
摘要:最初级的缓存不一致问题以及解决方案 问题: 先修改数据库,再删除缓存,如果删除缓存失败了,那么会导致数据库中是新数据,缓存中是旧数据,数据出现不一致 解决思路: 先删除缓存:再修改数据库,如果删除缓存成功了,如果修改数据库失败了,那么数据库中是旧数据,缓存中是空的,那么数据不会不一致因为读的时候缓存
阅读全文
posted @
2021-11-17 10:53
公众号/架构师与哈苏
阅读(41)
推荐(0) 编辑
redis集群模式的工作原理
摘要:redis cluster原理 redis cluster(多master + 读写分离 + 高可用) 我们只基于redis cluster去搭建redis集群即可,不需要手工去搭建replication复制+主从架构+读写分离+哨兵集群+高可用 redis cluster vs replicati
阅读全文
posted @
2021-11-16 11:41
公众号/架构师与哈苏
阅读(77)
推荐(0) 编辑
redis 主从复制的核心原理
摘要:当启动一个 slave node 的时候,它会发送一个 PSYNC 命令给 master node。 如果这是 slave node 初次连接到 master node,那么会触发一次 full resynchronization 全量复制。此时 master 会启动一个后台线程,开始生成一份 RD
阅读全文
posted @
2021-11-16 11:41
公众号/架构师与哈苏
阅读(29)
推荐(0) 编辑
redis哨兵原理
摘要:哨兵是redis集群架构中非常重要的一个组件 主要功能如下: 集群监控,负责监控redis master和slave进程是否正常工作 消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员 故障转移,如果master node挂掉了,会自动转移到slave node上 配置
阅读全文
posted @
2021-11-16 11:40
公众号/架构师与哈苏
阅读(89)
推荐(0) 编辑
redis如何通过读写分离来承载读请求QPS超过10万多
摘要:单机redis,能够承载的QPS大概就在上万,到几万不等 方案 读写分离,一般都是用来支撑读高并发,写请求比较少,可能请求也就一秒几千 大量的请求都是读,一秒钟二十万次 master 同步数据 slave复制,异步的 master持久化对于主从架构的安全保障 如果采用了主从架构,那个建议必须开启ma
阅读全文
posted @
2021-11-15 11:46
公众号/架构师与哈苏
阅读(237)
推荐(0) 编辑
redis有几种数据类型
摘要:string hash list set sorted set string 这是最简单的类型,就是普通的 set 和 get,做简单的 KV 缓存。 hash 这个是类似 map 的一种结构,这个一般就是可以将结构化的数据,比如一个对象(前提是这个对象没嵌套其他的对象)给缓存在 redis 里,然
阅读全文
posted @
2021-11-12 16:20
公众号/架构师与哈苏
阅读(45)
推荐(0) 编辑
redis nio 多路复用
摘要:IO多路复用程序 socket进入队列 文件事件分发器 处理器
阅读全文
posted @
2021-11-12 15:58
公众号/架构师与哈苏
阅读(61)
推荐(0) 编辑
redis中的事务
摘要:Redis事务提供了一种"将多个命令打包,然后一次性,按顺序地执行"的机制,并且事务在执行的期间不会主动中断. redis中事务是可以视为一个队列,即我们可以通过MULTI开始一个事务,这相当于我们声明了一个命令队列。接下来,我们向Redis中提交的每条命令,都会被排入这个命令队列。当我们输入EXE
阅读全文
posted @
2021-11-02 16:18
公众号/架构师与哈苏
阅读(51)
推荐(0) 编辑
redis缓存穿透,缓存击穿,缓存雪崩
摘要:缓存穿透 缓存穿透是指用户查询数据,在数据库没有,自然在缓存中也不会有。这样就导致用户查询的时候,在缓存中找不到,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次无用的查询)。这样请求就会绕过缓存直接查数据库,这也是经常提的缓存命中率问题。 解决办法: 1.接口层增加校验,如用户鉴权校验,i
阅读全文
posted @
2021-08-19 16:33
公众号/架构师与哈苏
阅读(28)
推荐(0) 编辑
redis的持久化
摘要:Redis提供两种持久化机制RDB和AOF机制 RDB RDB(Redis DataBase)持久化方式: 是指数据集快照的方式半持久化模式记录redis数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。 优点: 1.只有一个文件
阅读全文
posted @
2021-08-19 15:39
公众号/架构师与哈苏
阅读(40)
推荐(0) 编辑
redis的过期策略和淘汰策略
摘要:过期键删除策略 1.定时删除:在设置键的过期时间的同时,创建一个定时器timer,让定时器在键过期时间来临时,立即执行对键的删除操作。 2.惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回改建。 3.定期删除:每隔一段时间程
阅读全文
posted @
2021-08-18 15:37
公众号/架构师与哈苏
阅读(91)
推荐(0) 编辑
redis如何实现分布式锁?
摘要:1.使用redis中的自增来实现 2.使用setnx + del # 如果不存在set(返回1),如果存在则失败(返回0) 为了避免死锁会加上一个过期时间 自增方式 boolean isSelf = false; try { Long clock = cacheOperation.incrByOne
阅读全文
posted @
2021-08-18 11:21
公众号/架构师与哈苏
阅读(67)
推荐(0) 编辑
redis支持的数据类型有哪些?
摘要:string,list,hash,set,zset 底层实现数据结构 数据结构 String sds struct sdshdr{ //等于 SDS 保存字符串的长度 int len; //记录 buf 数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[];
阅读全文
posted @
2021-08-18 10:52
公众号/架构师与哈苏
阅读(111)
推荐(0) 编辑
redis为什么这么快?
摘要:1.纯内存操作 2.单线程操作,避免了频繁的上下文切换 3.采用了非阻塞I/O多路复用机制 (cpu不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存或者网络带宽。)
阅读全文
posted @
2021-08-18 10:43
公众号/架构师与哈苏
阅读(25)
推荐(0) 编辑
redis和memecache有什么区别?
摘要:1.memcache所有值均是简单地字符串,redis有复杂的数据类型。 2.memcache不支持数据持久化,redis支持数据持久化。 3.redis速度比memcache快,redis构建了自己的vm机制,因为一般的系统调用系统函数,会浪费一定的时间去移动和请求。
阅读全文
posted @
2021-08-18 10:29
公众号/架构师与哈苏
阅读(100)
推荐(0) 编辑
redis搭建集群和主从
摘要:说明 Redis集群至少需要3个节点,来支持投票容错机制,每个节点都有从节点,所有最少是6个服务(3个主3个从) 因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到了这16384[0-16383]个slot上,或者说把这些slot均等的分配给了各个节点。当需要在Redis集群存
阅读全文
posted @
2021-04-25 18:52
公众号/架构师与哈苏
阅读(102)
推荐(0) 编辑
redis主从复制搭建
摘要:主从概念 ⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave master用来写数据,slave用来读数据,来实现读写分离 下载redis,并编译 # 下载 wget http://download.redis.io/releases/redis-6.0.6.tar.gz
阅读全文
posted @
2021-04-25 14:27
公众号/架构师与哈苏
阅读(40)
推荐(0) 编辑
注解方式加锁
摘要:原理使用AOP 元注解类 package com.meeno.common.lock; import org.springframework.core.annotation.AliasFor; import java.lang.annotation.*; @Retention(RetentionPo
阅读全文
posted @
2020-11-19 17:04
公众号/架构师与哈苏
阅读(292)
推荐(0) 编辑
分布式redis自增
摘要:redis+springboot RedisUtil.java package com.meeno.chemical.common.redis; import java.util.Date; import java.util.List; import java.util.Map; import ja
阅读全文
posted @
2020-11-09 14:31
公众号/架构师与哈苏
阅读(373)
推荐(0) 编辑
Java使用Lettuce操作redis
摘要:maven包 # 包含了lettuce jar <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
阅读全文
posted @
2020-10-15 12:15
公众号/架构师与哈苏
阅读(2117)
推荐(0) 编辑