DeathWhispers

ReentrantLock中的公平锁和非公平锁的底层实现

ReentrantLock中的公平锁和非公平锁的底层实现 首先不管是公平锁和非公平锁,它们的底层实现都会使用AQS来进行排队,它们的区别在于:线程在使用lock()方法加锁时,如果是公平锁,会先检查AQS队列中是否存在线程在排队,如果有线程在排队,则当前线程也进行排队,如果是非公平锁,则不会去检查是否有线程在排队,而是直接竞争锁。 不管是公平锁还是非公平锁,一旦没有竞争到锁,都会进行排队...

Redis线程模型

Redis线程模型 Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器(file event handler)。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。 因为文件事件分派器队列的消费是单线程,所以Redis才叫单线程模型文件事件处理器使用I/O多路复用(multiplexing)程序来同时监听多个套接字,并根据套接...

Redis的持久化方案

面试的时候,如果不能完整回答出来,也不会有大问题。重点,在于有条理,对 RDB 和 AOF 有理解。 🦅 持久化方式 Redis 提供了两种方式,实现数据的持久化到硬盘。 1、【全量】RDB 持久化,是指在指定的时间间隔内将内存中的数据集快照写入磁盘。实际操作过程是,fork 一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。 2、【增量】A...

Redis的应用场景

Redis的应用场景 计数器 可以对String进行自增自减运算,从而实现计数器功能。Redis这种内存型数据库的读写性能非常高,很适合存储频繁读写的计数量 缓存 将热点数据放到内存中,设置内存的最大使用量以及淘汰策略来保证缓存的命中率 会话缓存 可以使用Redis来统一存储多台应用服务器的会话信息。当应用服务器不再存储用户的会话信息,也就不再具有状态,一个用户可以请求任意一个应...

Redis的事务

Redis的事务 Redis事务天然具有隔离性 Redis事务时单进程程序,并且他保证在执行事务时,不会对事务进行中断,事务可以运行知道执行完所有事务队列中的命令为止。因此,Redis的事务是总是带有隔离性的。 Redis事务保证原子性吗,支持回滚吗 Redis中,单条命令是原子执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余命令仍会被执行。 Redis事务其他...