Redis缓存中间件

1 为什么使用Redis?

        高并发:直接操作缓存能够承受的请求远大于直接操作数据库

        高性能:访问数据库是从硬盘上读取,利用Redis缓存,使得访问数据时在内存上读取

2 Redis为什么块?

        完全基于内存,非常快速

        数据结构简单,对数据的操作简单

        采用单线程,避免上下文切换和竞争条件

        使用I/O多路复用模型,非阻塞式I/O

        底层模型不同,客户端通信协议为Redis自己构建的机制,减少了调用系统函数的时间

3 Redis数据模型

        String

        List

        Set

        Zset

        Hash

4 Redis应用场景

        计数器:基于String incrby

        缓存

        会话缓存

        全页缓存FPC

        查找表

        消息队列:List lpush rpop

        分布式锁:setnx、RedLock

5 Redis持久化

        RDB:dump.rdb;配置策略,根据策略进行持久化;数据进行二进制压缩;单线程save、多线程bgsave

                优点:数据恢复快(二进制压缩文件)

                缺点:安全性不高,Redis宕机后丢失数据多

        AOF:.aof;配置策略,支持一秒钟持久化,且能追加到之前文件中

                优点:安全性高,Redis宕机后丢失数据少

                缺点:文件大,恢复速度慢

        混合持久化:结合RDB恢复速度快 + AOF安全(基于AOF);AOF进行持久化后,会对文件进行压缩

6 Redis过期删除策略

        定时过期:针对设置过期时间的key,Redis会创建定时器并追踪

        惰性过期:当访问Key时,才判断是否过期,过期则清除;可以节省CPU资源但对内存不友好(大量过期Key但没有被访问时)

        定期过期:每隔一段时间扫描key,判断key是否过期,过期则删除

Redis使用惰性过期和定期过期两种策略

7 Redis内存淘汰策略(内存不足以容纳新数据时)

        全局key空间选择性移除:

                noeviction:新写入操作会报错

                allkeys-lru:删除最少使用的key

                allkeys-random:随机移除key

        设置过期时间的键空间选择性移除:

               volatile-lru:设置了过期时间的key中,移除最近最少使用的key

                volatile-random:设置了过期时间的key中,随即移除key

                volatile-ttl:设置了过期时间的key中,更早过期时间的key先移除

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值