一.Redis是一个开源的,遵循BSD的,基于内存数据储存,被用于作为数据库的缓存,消息中间件.
二.Redis的特点
1.高性能的key/value内存数据库
2.支持丰富的数据类型
3.Redis支持持久化
4.Redis是单线程,单进程的
三.Redis的持久化机制
Redis有两种持久化机制,一种是RDB(快照),一种是AOF(追加日志文件),其中,快照是将某一时刻的所有数据写入硬盘,而日志文件则是将客户端执行的写命令记入到日志文件中
RDB和AOF的区别
-
Redis加载RDB恢复数据远远快于AOF的方式,因为只需要读取rdb文件,直接加载到内存中即可
-
AOF硬件宕机最少只会丢失一秒的文件
-
AOF记录的是操作,RDB记录的是添加过的所有数据
-
AOF文件比RDB文件大,AOF比RDB文件更容易受损
四.Redis的五大基本数据类型
1String类型,主要是用作验证码的储存
常用操作指令
set 设置一个key/value
get 根据key获得对应的value
setex 设置一个key存活的有效期
setnx 不做任何操作,不做任何添加
incr 进行数值类型的+1操作
incrby 根据提供的数据类型进行加法操作
2.list类型,特点的元素有序且可以重复
常用操作指令
lpush 将某个值加入到一个key列表的头部
lpop 返回和移除列表左边的第一个元素
lrange 获取某一个下标区间的元素,从0开始
llen 获取列表元素个数
3.set类型.特点是元素无序且不可以重复.主要用作好友和可能认识的人
常用操作指令
sadd 为集合添加元素
smebers 显示集合中的所有元素(无序)
scard 返回集合中元素的个数
srem 从集合中删除一个元素
sdiff 求差集
sinter 求交集
4.set类型,特点是可以排序,不可重复,它主要是用于排行榜
常用操作指令
zadd 添加一个有序集合
zcard 返回集合的元素个数
zrange 升序
zrevrange 降序
zrem 移除某一个元素
5.hash类型,特点是无序的
常用操作指令
hset 设置一个key/value对
hget 获得一个key对应的value
五.Redis的主从复制和哨兵机制
Redis主从复制是一种常见的数据备份方式,可以实现数据的冗余备份、读写分离等功能。Redis主从复制的原理是将一个Redis实例的数据复制到多个Redis实例上。其中,一个Redis实例作为主节点(Master),其他实例作为从节点(Slave)。主节点负责接收所有的写操作,并将写操作同步给从节点。而从节点只能接收读请求,不处理任何写请求从而保证了数据的一致性。
哨兵机制是Redis高可用性的重要保障。当Redis主节点出现故障时,哨兵机制可以自动选举新的主节点,确保整个系统的可用性。哨兵机制主要由哨兵节点组成,哨兵节点会定期检查Redis实例的健康状态,并在主节点出现故障时,自动选举新的主节点。同时,哨兵节点还可以执行故障转移操作,将原本的从节点提升为新的主节点,并重新建立主从复制关系,
什么是缓存击穿,缓存穿透,缓存雪崩
缓存穿透:
-
发生:客户端请求的数据,在数据库和redis中都不存在,这样缓存永远都不会生效,请求最终都到了数据库上。
-
解决:
-
当在数据库查询的结果也不存在的时候,可以返回null值给redis,并且设置TTL
-
布隆过滤器
-
缓存击穿:
-
发生:也叫热点key问题,一个被高并发访问且业务复杂的key突然失效了,无数的请求瞬间给数据库带来的巨大冲击
-
解决:
-
互斥锁
-
缓存雪崩:
-
发生:同一时间段内,大量的缓存key失效或者redis宕机,到时大量的请求到达数据库,带来巨大的压力。
-
解决:
-
给key设置随机的TTL
-
集群方案防止宕机不可用
-