摘要:
加分布式锁 其实前面介绍过的加唯一索引或者加防重表,本质是使用了数据库的分布式锁,也属于分布式锁的一种。但由于数据库分布式锁的性能不太好,我们可以改用:redis或zookeeper。 鉴于现在很多公司分布式配置中心改用apollo或nacos,已经很少用zookeeper了,我们以redis为例介 阅读全文
摘要:
什么是Redis? Redis(Remote Dictionary Server) Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API 的非关系型数据库。 传统数据库遵循 ACID 规 阅读全文
摘要:
基于binlog+Canal+Redis方案是一种解决分布式缓存和数据库之间数据一致性问题的方法,它通过MySQL的binlog和Canal机制,实现数据同步到Redis缓存,以保证数据一致性。 . MySQL主备复制原理 2. MySQL中binlog配置 3. Canal工作原理、安装、配置、使 阅读全文
摘要:
放入缓存中的数据应该指定过期时间,为什么呢, 因为过期时间可以确保缓存中的数据不会永久存在,从而避免缓存中出现过时或无效的数据。指定过期时间有以下几个重要原因:1. 数据更新和一致性:当数据发生变化时,缓存中的数据可能会变得过时。 如果不过时,新的数据就更新不了,就失去了缓存的意义; 通过设置过期时 阅读全文
摘要:
什么是大key 很多朋友肯定在想redis的key能有多大呀? 这里就有个误区了,所谓的大key问题是某个key的value比较大,所以本质上是大value问题。 “ 这样就对上了,key往往是程序可以自行设置的,value往往不受程序控制,因此可能导致value很大。 设想一种场景: “ 在线音乐 阅读全文
摘要:
1. 什么是I/O在计算机操作系统中,所谓的I/O就是输入(Input)和输出(Output),也可以理解为读(Read)和写(Write),针对不同的对象,I/O模式可以划分为磁盘IO模型和网络IO模型。IO操作会涉及到用户空间和内核空间的转换,先来理解以下规则: 内存空间分为用户空间和内核空间, 阅读全文
摘要:
2.Redis 单线程含义 Redis 的网络 IO 和键值对读写是由一个线程来完成的 Redis 其他功能,如持久化、异步删除、集群数据同步等其实都是由额外线程执行 3.Redis单线程设计 3.1 多线程需要解决的问题 4.多路复用机制 Redis 多路复用机制在网络 IO 操作中能并发处理大量 阅读全文
摘要:
数据库有json类型时,Java代码最好直接用JSON类去标识该字段, 这样返回数据的时候可以既能返回jsonobject,又能返回jsonarray 当然 以上都属于用的阿里fastjson。 阅读全文