随笔分类 - redis
摘要:LRU算法 LRU算法定义: LRU算法是指最近最少使用算法,意思是LRU认为最近使用过的数据,将来被访问的概率会大,最近没有被访问的数据意味着以后刚问的概率小。 为何要用LRU算法: 1、我们的存储空间是有限的,当存储空间满了之后,要删除哪些数据呢,才能会时缓存的命中率高一些呢 2、LRU算法还是
阅读全文
摘要:缓存穿透是指 查询一个不存在的数据,每次都需要查询数据库。由于写入缓存是被动操作,并且数据库每次查询为空,所以不会向缓存中写入数据,导致每次查询会越过缓存直接查询数据库,访问量大时增加数据库压力 解决方案: 1、回写空值: 查询完数据库时,将空值塞入缓存并加入较短的过期时间。需要评估一下缓存容量是否
阅读全文
摘要:Redis基于Reactor模式开发了自己的网络事件处理器。被称为文件事件处理器,由于这个处理器是单线程的所以决定了redis是单线程的。 Redis线程模型的组成: 多个socket IO多路复用程序 scocket队列 文件事件分配器 事件处理器(连接应答处理器,命令请求处理器,命令回复处理器)
阅读全文
摘要:redis支持高并发的原因: redis是基于内存的,内存读写很快 redis的是单线程的,省去了很多多线程上下文切换的时间 redis虽然是单线程,但采用了IO多路复用技术,非阻塞IO,即多个网络连接复用一个线程,保证多连接的同时增加系统的吞吐量 redis的数据结构,采用hash,读取速度比较快
阅读全文
摘要:基于redis实现分布式锁,主要原理在于key,每次访问时判断当前key是否存在于redis中,若存在则阻塞,若不存在则加入redis中同时获取redis锁。 但是java中获取key值,及向redis中塞入key以下是两个操作不是原子性的 1、 redis.get(key) 2、redis.set
阅读全文
摘要:redis事务与传统的关系型数据库的事务不同。redis事务是指一组命令的集合,事务和命令都是最小的执行单位,事务保证了一组命令执行的原子性。 原理是将一组命令发送给redis,redis一次执行这一组命令。同时redis事务遇到错误后没有传统数据库的回滚操作,而是会继续执行后续的命令。 redis
阅读全文

浙公网安备 33010602011771号