什么是redis
redis是非关系型(NOSQL)的键值对数据库。它的键只能是string,值类型包括string,hash,list,set,zset等。它的数据保存在内存中,所以速度非常快,常用于分布式缓存。
redis的优缺点
优点:速度快;支持多种数据类型;支持数据持久化;支持事务,redis操作是原子性的,它还支持多个操作合并后的原子性操作;支持主从复制,可以实现读写分离
缺点:数据库容量受内存限制
redis为什么快
1.它完全基于内存
2.采用单线程,避免了线程间的上下文切换
3.数据结构简单,数据操作简单
4.使用多路I/O复用,非阻塞IO
redis是单线程还是多线程
redis是单线程的,但惰性删除、数据持久化、主从同步都是由额外子线程执行的,6.0后还引入了多线程进行IO读写处理,但它执行命令的主线程还是单线程的。
redis的持久化机制
RDB:内存中的数据集以快照的形式保存到磁盘
AOF:将执行的每条写命令保存到文件中
优缺点:RDB的数据恢复速度更快;AOF数据不容易丢失,安全性更高
两种方式可以同时使用,既能方便数据的备份,也能确保数据的完整性
缓存雪崩,缓存击穿,缓存穿透
缓存雪崩:同一时间大面积key时效
处理办法:在批量往redis存数据时,加上个随机值
缓存击穿:一个非常热点数据失效,大并发访问直接落到数据库上
处理办法:非常热点的数据设置永不过期,或者获取数据的地方使用互斥锁
缓存穿透:是指用户发起大量请求获取一个在数据库和缓存中都不存在的值
处理办法:对请求数据进行校验,或者将此类数据也存入缓存
redis集群策略
redis的过期删除策略
常用命令
常用配置
常用工具