随笔分类 - 缓存
摘要:String 字符串 字符串类型是redis最基础的数据结构,首先键是字符串类型,而且其他几种结构都是在字符串类型基础上构建的,所以字符串类型能为其他四种数据结构的学习尊定基础。字符串类型实际上可以是字符串(简单的字符串、复杂的字符串(xml、json)、数字(整数、浮点数)、二进制(图片、音频、视
阅读全文
摘要:工作原理 canal 译意为水道,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。 * MySQL主备复制原理MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show bin
阅读全文
摘要:我们通常使用的synchronized或者Lock都是线程锁,对同一个JVM进程内的多个线程有效。因为锁的本质 是内存中存放一个标记,记录获取锁的线程是谁,这个标记对每个线程都可见。然而我们启动的多个订单服务,就是多个JVM,内存中的锁显然是不共享的,每个JVM进程都有自己的 锁,自然无法保证线程的
阅读全文
摘要:1、最初级的缓存不一致问题以及解决方案先删除缓存,再修改数据库,如果修改数据库的时候,别的线程查到旧数据并更新缓存,缓存中是旧数据,数据出现不一致。 先修改数据库,再删除缓存,如果删除缓存成功了修改数据库失败了,那么数据库中是旧数据,缓存中是空的,那么数据不会不一致,因为读的时候缓存没有,则读数据库
阅读全文
摘要:缓存雪崩: 缓存雪崩大概的意思就是缓存在一定时间内失效,所有请求直接落到db中,从而造成数据库崩溃的情况。例如下面这个案例。本身系统架构是没有问题的,但是如果这时候缓存系统宕机了,每秒5000个请求全部打入到数据库中,就会造成数据库崩溃从而整个系统都不能用。 解决方案: 1:限制并发数量,比如通过令
阅读全文
摘要:为什么redis要用单线程 我们知道,一般使用多线程可以增加系统吞吐率,但是如果没有经过良好的系统设计的话,线程数量上升到一定级别时,系统吞吐量反而会下降。出现这个情况的主要原因就是多个线程共享同一个数据结构时,为了保证共享资源的正确性、那就必须有额外机制进行保证,而这个额外机制就会带来性能开销降低
阅读全文
摘要:RDB的持久化策略 (快照方式,默认持久化方式): 按照规则定时将内存中的数据同步到磁盘,它有以下4个触发场景。 1. 自己配置的快照规则 vim /redis/bin/ redis.conf;按照save <seconds> <changes>这个规则自己添加或修改规则。 2. save或者bgs
阅读全文
摘要:Redis-Cluster工作原理: redis集群内置了16384个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个key 都会对应一个编号在 0-16383 之间的哈希槽
阅读全文