摘要: bio:阻塞同步 nio:非阻塞同步 aio:非阻塞异步 netty自己有多种nio的实现原因? netty暴露了更多的可控参数:netty是边缘触和水平触发相切换 水平触发与边缘触发形象解释:水平触发: 点单后,菜(数据)做好了,服务员端上来问吃不吃(读),你不吃或者吃不完,她过会还会端过来问你吃 阅读全文
posted @ 2021-01-02 16:26 xzwcomeon 阅读(69) 评论(0) 推荐(0) 编辑
摘要: redis cluster在运行时,每个redis实例上都会保存slot和实例的对应关系,为了让集群中的每个实例都知道其他所有实例的状态信息,实例之间会按照 一定的规则进行通信,这个规则就是gossip协议。 Gossip 协议的工作原理:一是,每个实例之间会按照一定的频率,从集群中随机挑选一些实例 阅读全文
posted @ 2020-12-04 16:26 xzwcomeon 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 秒杀过程:库存查验、库存扣减和订单处理:在库存查验过程:支撑大量高并发的库存查验请求,我们需要在这个环节使用 Redis 保存库存量,这样一来,请求可以直接从 Redis 中读取库存并进行查验。 订单处理可以在数据库中执行,但库存扣减操作,不能交给后端数据库处理。在数据库中处理订单的原因比较简单, 阅读全文
posted @ 2020-11-18 20:16 xzwcomeon 阅读(2069) 评论(0) 推荐(0) 编辑
摘要: codis:codis server:这是进行了二次开发的 Redis 实例,其中增加了额外的数据结构,支持数据迁移操作,主要负责处理具体的数据读写请求。 codis proxy:接收客户端请求,并把请求转发给 codis server。Zookeeper 集群:保存集群元数据,例如数据位置信息和 阅读全文
posted @ 2020-11-18 18:46 xzwcomeon 阅读(533) 评论(0) 推荐(0) 编辑
摘要: 之前一直困扰自己的问题的解决方案:在主从集群中发生数据丢失,最常见的原因就是主库的数据还没有同步到从库,结果主库发生了故障,等从库升级为主库后,未同步的数据就丢失了。 通过比对主从库上的复制进度差值来进行判断,也就是计算 master_repl_offset 和 slave_repl_offset 阅读全文
posted @ 2020-11-18 17:26 xzwcomeon 阅读(201) 评论(0) 推荐(0) 编辑
摘要: redis主从同步的机制出现的问题:第一:主从同步不一致 原因:主从库在命令传播阶段:主从库间的命令复制是异步进行的。 即主库将接受到的写命令发发送给从库后,就会去处理客户端的其他请求,而不会等到从库执行完写命令后在返回去处理其他请求,这时如果由于网络原因,从库没有及时从缓冲区读出主库的写命令, 而 阅读全文
posted @ 2020-11-04 21:34 xzwcomeon 阅读(688) 评论(0) 推荐(0) 编辑
摘要: 事务的acid特性:原子性,一致性,隔离性,持久性 原子性的要求很明确,就是一个事务中的多个操作必须都完成,或者都不完成。 一致性:指数据库中的数据在事务执行前后是一致的。 隔离性:它要求数据库在执行一个事务时,其它操作无法存取到正在执行事务访问的数据。 持久性:数据库执行事务后,数据的修改要被持久 阅读全文
posted @ 2020-10-30 17:46 xzwcomeon 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 在分布式系统中,当有多个客户端需要获取锁时,就需要分布式锁,此时,锁时保存在一个共享存储系统中等,可以被多个客户端共享访问和获取 Redis 本身可以被多个客户端共享访问,正好就是一个共享存储系统,可以用来保存分布式锁。 在介绍分布式锁之前要先介绍一下单机上的锁 单机上的锁:对于在单机上运行的多线程 阅读全文
posted @ 2020-10-28 18:04 xzwcomeon 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 慢查询功能:慢查询只统计统计客户所发送命令的执行时间。 慢查询日志是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值得时候,就将这条命令的信息(发生时间,耗时,命令详细时间)记录下来。 而这个预设阀值redis提供了slowlog-log-slower-than和slowlog-max-le 阅读全文
posted @ 2020-10-27 17:28 xzwcomeon 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 学习redis api的方法: 1:理解redis的一些机制,会发现这些命令有很强的通用性。 2:redis不是万金油,有些数据结构和命令必须在特定场景下使用。 keys * :查询当前数据库中中的所有键 dbsize:数据库键的数量 rpush :插入一个列表数据 exists:判断键是否存在 d 阅读全文
posted @ 2020-10-23 10:54 xzwcomeon 阅读(151) 评论(0) 推荐(0) 编辑