(1)什么是Redis?简述它的优缺点?Redis为什么这么快?
Redis本质上是一个Key-Value类型的内存数据库,把整个数据库加载在内存当中操作,定期通过异步操作把数据库中的数据复制到硬盘中。(异步操作,一种非阻塞执行任务的方式,其中任务的执行与结果的返回不会阻碍原者继续执行后续操作。)
优点:
读写性能极高:Redis能读的速度是110000次/s,写的速度是81000次/s。
支持数据持久化:支持AOF和RDB两种持久化方式。
支持事务:Redis的所有操作都是原子性的,要么都成功执行,要么不执行。
数据结构丰富:除了支持string类型的value外,还支持hash、set、zset、list等数据结构。
支持主从复制:主机会自动将数据同步到从机,可以进行读写分离。
特性丰富:Redis还支持 publish/subscribe,通知,key过期等特性。
缺点:
数据库容量受到物理内存的限制:不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
主机宕机:宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。(主机北京,从机上海,北京用户连主机,上海用户连从机)
Redis速度快的原因:
内存存储:Redis使用内存存储,没有磁盘IO上的开销。
单线程实现(Redis 6.0以前):Redis使用单个线程处理请求,避免了多个线程之间线程切换、锁资源争用的开销。
非阻塞IO:Redis使用多路复用IO技术,不在网络I/O上浪费过多的时间。
优化的数据结构:Redis有很多可以直接应用的优化的数据结构。
(2)Redis相比Memcached有哪些共同点和区别?
共同点:
都是基于内存的数据库,⼀般都⽤来当做缓存使⽤。都有过期策略。性能都⾮常⾼。
区别:
数据类型:Redis支持更为丰富的数据类型,支持string(字符串),list(列表),Set(集合)、Sorted Set(Zset有序集合)、Hash(哈希)等,Memcached所有的值,均是简单的字符串。
持久化:Redis支持数据落地持久化存储,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。memcache不支持数据持久存储,它把数据全部存在内存。
集群模式:Redis提供主从同步机制,以及 Cluster集群部署能力,能够提供高可用服务。Memcached没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据
网络IO模型:Redis使用单线程的多路 IO 复用模型,Memcached使用多线程的非阻塞IO模式。
过期策略:Redis 同时使⽤了惰性删除与定期删除,Memcached 过期数据的删除策略只⽤了惰性删除。
性能对比:Redis的速度比Memcached快很多。
标签:共同点,数据,Redis,支持,内存,IO,Memcached From: https://blog.csdn.net/xiaozhi6yyy18/article/details/137524457