01 2022 档案

摘要:一、Redis单线程如何处理那么多并发客户端连接,为什么单线程,为什么快 Redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,一次放到文件事件分派器,事件分派器将事件分发给事件处理器。 Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或 阅读全文
posted @ 2022-01-29 14:09 幻月hah 阅读(523) 评论(0) 推荐(1) 编辑
摘要:一、需求分析 B站视频、淘宝、抖音等短链接。 好处: 简单方便,利与推广 长度短,便于http传输,有助于带宽节约和高并发 防止尾巴参数泄密,不安全 二、架构设计 1、短链接映射算法如何编写? 一个长链接URL转换为4个短KEY: 将长网址 md5 生成32位签名串,分为4段, 每段8个字节; 对这 阅读全文
posted @ 2022-01-29 13:27 幻月hah 阅读(1061) 评论(0) 推荐(0) 编辑
摘要:一、需求分析 1、各种节假日,发红包+抢红包,100%高并发业务要求,不能用 mysql 来做。 2、一个总的大红包,会有可能拆分成多个小红包,总金额= 分金额1+分金额2+分金额3......分金额N。 3、每个人只能抢一次,你需要有记录,比如100块钱,被拆分成10个红包发出去,总计有10个红包 阅读全文
posted @ 2022-01-28 16:07 幻月hah 阅读(467) 评论(0) 推荐(0) 编辑
摘要:一、缓存双写一致性,谈谈你的理解 1、如果redis中有数据 需要和数据库中的值相同 2、如果redis中无数据 数据库中的值要是最新值 二、缓存按照操作来分,细分2种 1、只读缓存 2、读写缓存 同步直写策略:写缓存时也同步写数据库,缓存和数据库中的数据⼀致。如:canal 对于读写缓存来说,要想 阅读全文
posted @ 2022-01-28 11:37 幻月hah 阅读(167) 评论(0) 推荐(0) 编辑
摘要:一、认识canal 1、是什么? canal,中文翻译为 水道/管道/沟渠/运河,主要用途是用于 MySQL 数据库增量日志(binlog)数据的订阅、消费和解析,是阿里巴巴开发并开源的,采用Java语言开发; 历史背景是早期阿里巴巴因为杭州和美国双机房部署,存在跨机房数据同步的业务需求,实现方式主 阅读全文
posted @ 2022-01-26 17:31 幻月hah 阅读(780) 评论(0) 推荐(0) 编辑
摘要:一、基础 1、redis字典数据库的KV键值对到底是什么? redis 是 key-value 存储系统,其中key类型一般为字符串,value 类型则为redis对象(redisObject)。 从C的的源码分析KV是什么,每个键值对都会有一个dictEntry。 Redis定义了redisObj 阅读全文
posted @ 2022-01-25 16:46 幻月hah 阅读(3001) 评论(0) 推荐(0) 编辑
摘要:一、默认内存大小 默认在64位操作系统下是不限制内存大小的,在32位操作系统下是3G。 二、推荐设置内存的大小 推荐为最大物理内存的75%。(关键字:HashMap的负载因子默认为0.75) 三、三种过期key的删除策略 当一个key过期了,并不是立即从Redis中删除。而是以下三种方式: 1、立即 阅读全文
posted @ 2022-01-25 13:21 幻月hah 阅读(637) 评论(0) 推荐(0) 编辑
摘要:一、什么是缓存续命 Redis 分布式锁过期了,但是业务逻辑还没处理完怎么办? 守护线程续命,额外起一个线程,定期检查线程是否还持有锁,如果有则延长过期时间。Redisson 里面就实现了这个方案,使用 “看门狗” 定期检查(每1/3的锁时间检查1次),如果线程还持有锁,则刷新过期时间。 在获取锁成 阅读全文
posted @ 2022-01-25 11:36 幻月hah 阅读(2167) 评论(3) 推荐(0) 编辑
摘要:一、单机 1、三个重要元素 (1)加锁 加锁实际上就是在redis中,给Key键设置一个值,为避免死锁,并给定一个过期时间。 (2)解锁 将Key键删除。但也不能乱删,不能说客户端1的请求将客户端2的锁给删除掉,只能自己删除自己的锁 Lua脚本 if redis.call('get',KEYS[1] 阅读全文
posted @ 2022-01-24 17:14 幻月hah 阅读(721) 评论(0) 推荐(0) 编辑
摘要:1、基础知识 CAP:C(一致性),A(可用性),P(分区容错) redis单机:CP redis集群:AP zookeeper集群:CP 2、区别 (1)redis集群 redis是高并发性,采用异步通知的方式,当主机宕机时会发现锁丢失,比如:主节点没来的及把刚刚set进来这条数据给从节点,mas 阅读全文
posted @ 2022-01-24 15:25 幻月hah 阅读(610) 评论(0) 推荐(0) 编辑
摘要:一、基础知识 1、锁的种类 单机版同一个JVM虚拟机内,synchronized 或者 Lock 接口。 分布式不同个JVM虚拟机内,单机的线程锁机制不再起作用,资源类在不同的服务器之间共享了。 2、分布式锁需要具备的条件和刚需 独占性:OnlyOne,任何时刻只能有且仅有一个线程持有 高可用:若r 阅读全文
posted @ 2022-01-21 17:27 幻月hah 阅读(200) 评论(0) 推荐(0) 编辑
摘要:一、基础知识 1、概念 大量的请求同时查询一个 key 时,此时这个key正好失效了,就会导致大量的请求都打到数据库上面去。 简单说就是热点key突然失效了,暴打mysql。 2、危害 会造成某一时刻数据库请求量过大,压力剧增。 3、解决 (1)互斥更新、随机退避、差异失效时间。 互斥更新:缓存两套 阅读全文
posted @ 2022-01-20 23:21 幻月hah 阅读(446) 评论(0) 推荐(0) 编辑
摘要:一、(推荐)采用docker安装RedisBloom docker run -p 6379:6379 --name=redis6379bloom -d redislabs/rebloomdocker exec -it redis6379bloom /bin/bashredis-cli 二、编译安装 阅读全文
posted @ 2022-01-20 23:02 幻月hah 阅读(111) 评论(0) 推荐(0) 编辑
摘要:一、简介 请求去查询一条记录,先 redis 后 mysql 发现都查询不到该条记录,但是请求每次都会打到数据库上面去,导致后台数据库压力暴增,这种现象我们称为缓存穿透,这个redis变成了一个摆设。 危害: 第一次来查询后,一般我们有回写 redis 机制。第二次来查的时候 redis 就有了,偶 阅读全文
posted @ 2022-01-20 15:57 幻月hah 阅读(119) 评论(0) 推荐(0) 编辑
摘要:1、为什么发生 redis主机挂了,Redis 全盘崩溃 比如缓存中有大量数据同时过期 2、解决 redis缓存集群实现高可用(主从+哨兵 或者 redis集群) ehcache本地缓存 + Hystrix或者阿里sentinel限流&降级 开启Redis持久化机制aof/rdb,尽快恢复缓存集群 阅读全文
posted @ 2022-01-20 14:58 幻月hah 阅读(63) 评论(0) 推荐(0) 编辑
摘要:一、简介 由一个初值都为零的bit数组和多个哈希函数构成,用来快速判断某个数据是否存在。布隆过滤器是一种类似set的数据结构,只是统计结果不太准确。 为什么存在误差?因为底层由hash函数计算就避免不了“哈希冲突”,采用多个hash函数可以尽量减少误差。 二、特点 1、高效地插入和查询,占用空间少, 阅读全文
posted @ 2022-01-20 11:00 幻月hah 阅读(211) 评论(0) 推荐(0) 编辑
摘要:一、简介 GEO是Redis处理地理坐标的数据类型。 地球上的地理位置是使用二维的经纬度表示,经度范围 (-180, 180],纬度范围 (-90, 90],只要我们确定一个点的经纬度就可以名曲他在地球的位置。 例如滴滴打车,最直观的操作就是实时记录更新各个车的位置,然后当我们要找车时,在数据库中查 阅读全文
posted @ 2022-01-19 16:53 幻月hah 阅读(757) 评论(0) 推荐(0) 编辑
摘要:一、基础知识 1、常见名词 UV:Unique Visitor,独立访客,一般理解为客户端IP。需要去重。 PV:Page View,页面浏览量。不用去重。 DAU:Daily Active User,日活跃用户量。常用于反映网站、互联网应用或者网络游戏的运营情况。 MAU:MonthIy Acti 阅读全文
posted @ 2022-01-19 00:02 幻月hah 阅读(480) 评论(0) 推荐(0) 编辑
摘要:一、基础知识 1、概念 说明:用String类型作为底层数据结构实现的一种统计二值状态的数据类型位图(bitmap)本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们可以称之为一个索引或者位格)。Bitmap支持的最大位数是2^32位, 阅读全文
posted @ 2022-01-18 14:57 幻月hah 阅读(927) 评论(1) 推荐(0) 编辑
摘要:一、String(字符类型) 1、常见命令 2、应用场景 阅读数:只要点击了地址,直接可以使用incr key 命令增加一个数字1,完成记录数字。 二、Hash(散列类型) 1、常见命令 2、应用场景 用于存储对象 三、List(列表类型) 1、常见命令 2、应用场景 (1)微信公众号订阅的消息。例 阅读全文
posted @ 2022-01-17 17:17 幻月hah 阅读(133) 评论(0) 推荐(0) 编辑
摘要:一、下载mysql 下载mysql源安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm 安装mysql源 yum localinstall mysql57-community-release-el 阅读全文
posted @ 2022-01-15 12:34 幻月hah 阅读(50) 评论(0) 推荐(0) 编辑
摘要:一、Redis的历史 Redis的版本很多3.x、4.x、6.x,版本不同架构也是不同的: (1)版本3.x ,redis是单线程。 (2)版本4.x,严格意义来说也不是单线程,而是负责处理客户端请求的线程是单线程,但是开始加了点多线程的东西(异步删除)。——貌似 (3)最新版本的6.0.x后,告别 阅读全文
posted @ 2022-01-14 14:52 幻月hah 阅读(259) 评论(0) 推荐(0) 编辑
摘要:一、读写锁ReentrantReadWriteLock 1、基本概念 读写锁ReentrantReadWriteLock,一个资源能够被多个读线程访问,或者被一个写线程访问,但是不能同时存在读写线程。它并不是真正意义上的读写分离,它只允许读读共存,而读写和写写依然是互斥的。 一个ReentrantR 阅读全文
posted @ 2022-01-12 17:23 幻月hah 阅读(154) 评论(0) 推荐(0) 编辑
摘要:一、公平、非公平锁的区别 通过ReentrantLock的源码来讲解公平锁和非公平锁。 公平锁与非公平锁的lock()方法唯一的区别就在于公平锁在获取同步状态时多了一个限制条件:hasQueuedPredecessors(),它是公平锁加锁时判断等待队列中是否存在有效节点的方法。 公平锁:公平锁讲究 阅读全文
posted @ 2022-01-11 16:00 幻月hah 阅读(68) 评论(0) 推荐(0) 编辑
摘要:一、什么是AQS 1.1 概念 AbstractQueuedSynchronizer抽象同步队列,其定义了一套多线程访问共享资源的同步器框架,通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个int类变量表示持有锁的状态。 1.2 基石 很多同步类实现都依赖于AQS,如常用的Reentr 阅读全文
posted @ 2022-01-11 15:16 幻月hah 阅读(92) 评论(0) 推荐(0) 编辑
摘要:锁升级的流程:无锁 -> 偏向锁 -> 轻量锁(CAS)-> 重量级锁 一、偏向锁 1.1撤销和升级 1、偏向锁只有遇到其他线程尝试竞争偏向锁时,持有偏向锁的线程才会释放锁,线程是不会主动释放偏向锁的。 2、撤销需要等待全局安全点(该时间点上没有字节码正在执行),同时检查持有偏向锁的线程是否还在执行 阅读全文
posted @ 2022-01-08 16:24 幻月hah 阅读(211) 评论(0) 推荐(0) 编辑
摘要:一、对象的构成 二、对象头 对象头的大小,在64位系统中,Mark Word占了8个字节,类元信息占了8个字节,一共是16个字节。 2.1、对象标记Mark Word 2.2、类元信息Class Pointer 对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。 三、实例数 阅读全文
posted @ 2022-01-07 16:47 幻月hah 阅读(52) 评论(0) 推荐(0) 编辑
摘要:一、什么是内存泄露 不再会被使用的对象或者变量占用的内存不能被回收,就是内存泄露。 二、强引用 概念: 当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,死都不收。 强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾收 阅读全文
posted @ 2022-01-02 01:23 幻月hah 阅读(145) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示