Redis有哪些优缺点
优点:
- l内存数据库,读写速度快
- l支持数据持久化,便于备份、恢复
- l支持简单的事务
- l数据类型丰富
- l支持主从复制,哨兵机制
缺点:
- l数据存储在内存,容易丢失。
- l作为缓存时,存在与数据库数据不一致的问题
- l雪崩问题、缓存击穿问题、缓存穿透问题
为什么要用 Redis 做缓存?
缓存分为本地缓存和分布式缓存。使用 redis 或 memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。
Redis为什么这么快
1)纯内存操作
Redis将数据储存在内存里面,读写数据的时候都不会受到硬盘I/O速度的限制,所以速度快
2)单线程操作
单线程可以避免不必要线程间的切换和资源抢占
Redis 的持久化机制是什么?各自的优缺点?
RDB:RDB是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中。通过配置文件中的save参数来定义快照的周期。
AOF:持久化 则是将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis日志中文件恢复数据。
当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。
两种持久化的对比?
AOF文件比RDB更新频率高,优先使用AOF还原数据。
AOF比RDB更安全也更大
RDB性能比AOF好
如果两个都配了优先加载AOF
过期策略通常有以下三种:
定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。
惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则清除。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。
定期扫描:每隔一定的时间,会扫描expires字典中key,并清除其中已过期的key。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。