1、介绍一下Redis
Redis是一款使用C语言编写的高性能key-value数据库。
特点:
支持数据持久化,对数据的更新采用Copy-on-write技术,可以异步地保存到磁盘上。
丰富的数据类型,String Hash List Set Sored Set。
原子性,Redis的所有操作都是原子性。
支持数据的备份,快速的主从复制。
节点集群,很容易将数据分布到多个Redis实例中。
2、Redis持久化机制有哪些?各有什么优缺点?
RDB:指使用数据集快照的方式半持久化模式,记录redis数据库的所有键值对,在某个时间点将数据写入一个临时文件。持久化结束后,用这个临时文件替换上次持久化的文件,可恢复数据。
优点是性能较高,恢复操作简单。
缺点是安全性较低,RDB是每间隔一段时间进行持久化,若期间redis发生故障,可能会发生数据丢失。
AOP:指所有的命令行记录以redis命令请求协议的格式完全持久化存储,保存为aop文件。
优点是数据安全,缺点是恢复速度慢。
3、Redis过期键的删除策略有哪些?
定时删除:在设置键的过期的时间的同时,创建一个定时器,达到过期时间,执行键的删除操作。
惰性删除:不主动删除过期键,从键空间中获取键时,都检查取得的键是否过期,过期则删除,没过期则返回。
定期删除:每隔一段时间对数据库进行一次检查,删除里面的过期键。删除多少过期键、检查多少个数据库,由算法决定。
4、为什么Redis所有数据放到内存中?
1、Redis为了达到的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘,所以Redis具有高速读写和数据持久化的特征。
2、如果程序直接与磁盘交互,磁盘IO速度会严重影响Redis性能。
3、内存的硬件成本降低,使得Redis更受欢迎。
5、Redis有哪些适用场景?
会话缓存 全页缓存 秒杀系统 计数器 发布和订阅
6、 Redis如何做内存优化?
1.缩减键值对象:满足业务要求下越短越好,value值进行适当压缩。
2.共享对象池:即在开发过程中尽量适用整数对象以节省内存。
3、尽可能使用散列表。
4、编码优化,控制编码类型。
5、控制key的数量。