Redis的缓存穿透、缓存雪崩、缓存击穿问题的概念与解决办法

缓存穿透什么是缓存穿透?缓存穿透是指查询一个在缓存和数据库中一定不存在的数据,按照传统使用缓存流程:由于缓存不命中,接着查询数据库,但是数据库也无法查询出结果,因此也不会将空值写入到缓存中,这将会导致每个这样的查询都会去请求数据库,造成缓存穿透。如果有恶意用户,就可以利用这个漏洞,模拟请求很多缓存和

Redis的事件

概述Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:文件事件:Redis服务器通过套接字与客户端进行连接,而文件事件就是服务器对套接字操作的抽象,服务器与客户端的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。时间事件:Redis服务器中的一些操作

Redis的AOF持久化

概述除了RDB持久化功能,Redis还提供了AOF持久化功能。与RDB持久化功能通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。在AOF文件里面,除了用于指定数据库的SELECT命令是服务器自动添加之外,其他都是我们之前通过客户端

Redis的RDB持久化

概述Redis提供了RDB持久化功能,RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中。RDB持久化功能所产生的RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态。因为RDB文件是保存在硬盘里面

Redis数据库

服务器中的数据库Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库。structredisServer{//```//一个数组,保存着服务器中的所有数据

Redis中的对象

对象的类型与编码Redis使用对象来表示数据库中的键和值,每次当我们在Redis的数据库中新创建一个键值对时,我们至少会创建两个对象,一个对象用作键值对的键,另一个对象用作键值对的值。Redis中每个对象都由一个redisObject结构表示,该结构中和保存数据有关的三个属性分别是type属性、en

Redis中的数据结构与对象

动态字符串Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组),而是自己构建了一种名为简单动态字符串(SDS)的抽象类型,并将SDS用作Redis的默认字符串表示。在Redis里面,C字符串只会作为字符串字面量用在一些无需对字符串值进行修改的地方。当Redis需要的不仅仅是一个字符

redis中的布隆过滤器

概述布隆过滤器专门是用来解决去重问题。它在起到去重作用的同时,在空间上还能节省90%以上。可以把布隆过滤器理解为一个不怎么精确的set结构,当使用contains方法判断某个对象是否存在时,它可能会误判。但是布隆过滤器也不是特别不精确,只要参数设置得合理,它的精确度也可以控制得相对足够精确,只会有小

Redis删除过期Key的三种策略

Redis对于过期键有三种清除策略:被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key主动删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key当前已用内存超过maxmemory限定时,触发主动清理策略被动删除只有key被操

[转载]Redis 核心原理:基于事件的处理流程

概述本文介绍了Redis核心原理和架构:基于事件驱动的模型。事件模型是构成Redis内核的引擎,Redis的丰富功能和组件都是构建在这个模型上的。如果你使用过Redis,那么本文可以为你打开一道进入Redis内部世界的门,窥探Redis如何构建它的帝国。本文先对Redis使用的事件模型和原理进行介绍