Redis存储数据基于内存,传统关系型数据库存储数据到磁盘,Redis性能更优
Redis存储数据以key-value键值对,关系型数据库基于二维表,数据格式更为严谨
单线程,避免线程切换(线程切换和锁是”性能杀手“)
基于内存存储数据
采用IO多路复用机制,提高吞吐率
Redis是单线程的是指Redis在读写键值对时是单线程的
只有Redis持久化、异步删除等其实有Redis底层的其他线程执行
set:
zset:
相同:不仅能够对象集合中的元素增删改查,还能够对取交集等
存储有序可重复数据
缓存穿透:客户端请求不合法或者合法请求都不在缓存,造成频繁访问数据库
缓存击穿:热点key突然失效或者Redis重构复杂
缓存雪崩:缓存所有key全部失效或者Redis服务宕机
解决方案:
正常情况下给数据key分别设置一个随机的过期时间,而对应一些热点数据的key一般不设置过期时间
集群
哨兵
数据基于内存存储
Redis的持久化策略
惰性删除:每次访问key,都需要判断key的过期时间
定期删除:Redis会将带有过期时间的key存放到一个字典中,以每秒10次的方式扫描字典(贪心算法)