1、Redis是什么?
Redis是一个Key-Value类型的内存数据库,整个数据库加载在内存中操作,定期通过异步操作把数据库中的数据flush到硬盘上进行保存。因为是纯内存数据库,Redis的性能非常出色,每秒可处理超过10万次读写操作,是已知性能最快的Key-Value数据库
Redis优点?
- 读写性能极高,Redis能读的速度是110000次/秒,写的速度是81000次/秒
- 支持数据持久化,分为RDB和AOF两种持久化方式
- 支持事物,Redis所有的操作也都是原子性的(要么都执行,要么都不执行),单个操作具有原子性,多个操作也支持事物
- 数据类型丰富,有String、List、Set、SortedSet、Hash五种数据类型
- 支持主从复制,主机可以自动将数据复制到从机,可以进行读写分离
- 丰富的特性,Redis支持publish/subscribe、通知、key过期等特性。
Redis缺点?
- 数据库容量受物理内存限制,不能作为海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量高性能读写操作上。
- 主机宕机,宕机前有部分数据未能同步到从机,切换IP后还有引起数据不一致的问题,降低了系统的可用性。
Redis数据类型有哪些?
Redis有五种常用的数据类型:String、List、Set、SortedSet、Hash。以及三种特殊的数据类型:Bitmap、HyperLogLog、Geospatial,其中HyperLogLog、Bitmap的地底层都是String数据类型;Geospatial的底层是SortedSet数据类型
详细请参考该文章:https://blog.csdn.net/liqingtx/article/details/60330555
Redis持久化机制?
为了能够重用Redis数据,或者防止系统故障,我们需要将Redis中的数据写入到磁盘空间中,即持久化。
Redis提供了两种不同的持久化方法可以将数据存储在磁盘中,一种叫快照 RDB,另一种叫只追加文件AOF。
RDB
在指定的时间间隔内将内存中的数据集快照写入磁盘( snapshot),它恢复时是将快照文件直接读到内存里。
优势:适合大规模的数据恢复;对数据完整性和一致性要求不高
劣势:在一定间隔时间做一次备份,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改。
AOF
以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,换言之,Redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。
AOF采用文件追加方式,文件会越来越大,为避免出现此种情况,新增了重写机制,当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集.
优势
·每修改同步: appendfsync always同步持久化,每次发生数据变更会被立即记录到磁盘,性能较差但数据完整性比较好
·每秒同步: appendfsync everysec异步操作,每秒记录,如果一秒内宕机,有数据丢失·不同步:appendfsync no从不同步
劣势
相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdbaof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同