基于Redis实现缓存系统的注意点与一些常见问题
基于Redis实现缓存系统的注意点与一些常见问题1. 从计算机系统的缓存开始在计算机系统中,默认有两种缓存:CPU 里面的末级缓存,即 LLC,用来缓存内存中的数据,避免每次从内存中存取数据;内存中的高速页缓存,即 page cache,用来缓存磁盘中的数据,避免每次从磁盘中存取数据。LLC一般几M
基于Redis实现缓存系统的注意点与一些常见问题1. 从计算机系统的缓存开始在计算机系统中,默认有两种缓存:CPU 里面的末级缓存,即 LLC,用来缓存内存中的数据,避免每次从内存中存取数据;内存中的高速页缓存,即 page cache,用来缓存磁盘中的数据,避免每次从磁盘中存取数据。LLC一般几M
基于Redis实现分布式锁与Redis的ACID特性(以秒杀业务为例)1. 准备Redis实现秒杀业务,主要需要三块的知识储备:秒杀业务流程如何保证原子性(Redis能为我们做哪些ACID保证)Redis实现一个分布式锁下文会围绕这3块进行展开叙述。2. 秒杀业务流程分为三个阶段,秒杀阶段前,中,后
Redis的部分使用注意点1. 用SCAN命令代替KEYS等全数据返回命令SCAN命令是渐进式遍历,不会导致Redis的堵塞KEYS,SMEMBERS等命令是全量数据返回,会导致整个Redis实例的堵塞。2. 设置合适的AOF写回策略如果对数据持久化不敏感,可以不开启AOF。如果开启,就要设置合适的
Redis基础1. 设计一个键值数据库SimpleKV1.1. 需要存哪些数据不同键值数据库支持的 key 类型一般差异不大,而 value 类型则有较大差别。我们在对键值数据库进行选型时,一个重要的考虑因素是它支持的 value 类型。例如,Memcached 支持的 value 类型仅为 Str
1. 第一本福克纳接触到福克纳其实是豆瓣有一期纪念福克纳的活动,我点进去后发现有本叫做《喧哗与骚动》的书,我很喜欢这个书名,又因为这是49年诺奖作品,有了读这本书的计划。《喧哗与骚动》是我的第一本福克纳,工作之余大概花了一个月时间才看完,倒不是篇幅很长,而是福克纳的“意识流”的写作法让我一开始表现出
Java线程与协程1. 线程的实现方式1.1. 内核线程实现使用内核线程实现的方式也被称为1:1实现。内核线程(Kernel-Level Thread,KLT)就是直接由操作系统内核(Kernel,下称内核)支持的线程,这种线程由内核来完成线程切换,内核通过操纵调度器(Scheduler)对线程进行
1. 编译器分类前端编译器:.java文件转变为.class文件的过程(比如Javac)后端编译器:即时编译器(JIT编译器,Just In Time Compiler):运行期把字节码转变成本地机器码的过程(比如HotSpot的C1、C2编译器,Graal编译器)提前编译器:把程序编译成与目标机器
1. 运行时栈帧结构Java虚拟机以方法作为最基本的执行单元,“栈帧”(Stack Frame)则是用于支持虚拟机进行方法调用和方法执行背后的数据结构,它也是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧包括了局部变量表、操作数栈、动态连接、方法返回地址和
1. 类加载的时机一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading