一文详解Redis中BigKey、HotKey的发现与处理

NoSQL

Redis分布式锁(二)

Redis分布式锁01JVM层面的加锁,单机版的锁 synchronized ReentraLock 123456789101112131415161718192021222324252627class X { private final ReentrantLock lock = new ReentrantLock(); // ... public voi...
NoSQL

Redis过期数据删除策略

如果假设你设置了一批 key 只能存活 1 分钟,那么 1 分钟后,Redis 是怎么对这批 key 进行删除的呢? 常用的过期数据的删除策略就两个(重要!自己造缓存轮子的时候需要格外考虑的东西): 惰性删除: 只会在取出 key 的时候才对数据进行过期检查。这样对 CPU 最友好,但是可能会造成太多过期 key 没有被删除。 定期删除: 每隔一段时间抽取一批 key 执行删除过期 ...
NoSQL

Redis和memcached的区别和使用场景

共同点 都是基于内存的数据库,一般都用来当做缓存使用。 都有过期策略。 两者的性能都非常高。 区别 Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等; Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储; 虚拟内存–Redis当物理内存用完时,可以将一些很久...
NoSQL

Redis6.0 相关问题

Redis6.0之前的版本真的是单线程吗?Redis在处理客户端的请求时,包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处理,这就是所谓的“单线程”。但如果严格来讲从Redis4.0之后并不是单线程,除了主线程外,它也有后台线程在处理一些较为缓慢的操作,例如清理脏数据、无用连接的释放、大 key 的删除等等。 Redis6.0之前为...
NoSQL

Redis 单线程模型

Redis单线程模型文件事件处理器 Redis基于Reactor模式开发了网络事件处理器,这个处理器就叫做文件事件处理器(file event handler).这个文件事件处理器是单线程的,所以Redis才叫做单线程的模型,文件事件处理器采用了IO多路复用机制同时监听多个socket,根据socket上的事件来选择对应的事件处理器来处理这个事件; 如果被监听的socket准备好执行a...
NoSQL

Redis分布式锁

问题描述随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题! 分布式锁主流的实现方案 基于数据库实现分布式锁 基于缓存(Redis等) 基于...
NoSQL

Redis 如何配置Key的过期时间?他的实现原理是什么?

Redis设置key的过期时间 EXPIRE SETEX 实现原理定期删除每隔一段时间, 执行一次删除过期key的操作。 懒汉式删除当使用get、getset等指令 去获取数据时,判断key是否过期。 过期后,就先把key删除,再执行后面的操作。 Redis是将两种方式结合来使用。 定期删除:平衡执行频率和执行时长。 定期删除时会遍历每个datapase(默认16个),检查当前库中指定...
NoSQL

Redis哨兵模式

主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式…

NoSQL

Redis主从复制

为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步…

NoSQL