redis面试题
1.什么是redis?
Redis 是一个基于内存的高性能key-value数据库。
2.Reids的特点
01.Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。
02.Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。
03.Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
3.redis的优点?
(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
(2) 支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
4.redis相比memcached有哪些优势?
(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
(2) redis的速度比memcached快很多
(3) redis可以持久化其数据
5.Memcache与Redis的区别都有哪些?
01、存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。
02、数据支持类型 Memcache对数据类型支持相对简单。 Redis有复杂的数据类型。
03、使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
6.为何用Redis而不用map做缓存
01.Redis 可以用几十 G 内存来做缓存,Map 不行,一般 JVM 也就分几个 G 数据就够大了
02.Redis 的缓存可以持久化,Map 是内存对象,程序一重启数据就没了
03.Redis 可以实现分布式的缓存,Map 只能存在创建它的程序里
04.Redis 可以处理每秒百万级的并发,是专业的缓存服务,Map 只是一个普通的对象
05.Redis 缓存有过期机制,Map 本身无此功能
06.Redis 有丰富的 API,Map 就简单太多了
07.redis 数据可持久化保存,有些缓存你想重启程序后还能继续使用,那么map实现不了
08.redis 可以实现分布式部署,只要涉及到多台多进程啥的,map就实现不了
09.redis 有很多数据结构,方便操作,比如 hash set list sort-set等,在某些场景下操作起来比map方便
7.定时任务(待定)