背景
Redis如今已经成为Web开发社区中最火热的内存数据库之一,而它的诞生但现在不过才4年。
点此查看redis中文官方文档
一、什么是redis?
Redis是一个开源的高性能键值key-value对数据库,它通过提供多种键值数据库类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。
而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。但是,它也是不能替代关系型数据库,只能作为特定环境下的扩充。
redis是一个以key-value存储的数据库结构型服务器,它支持的数据结构类型包括:字符串(String)、链表(lists)、哈希表(hash)、集合(set)、有序集合(Zset)等。为了保证读取的效率,redis把数据对象都存储在内存当中,它可以支持周期性的把更新的数据写入磁盘文件中。而且它还提供了交集和并集,以及一些不同方式排序的操作。
ps:从内存中读取的数据的速度快很多!
二、我们为什么要使用redis?
或者说我们使用redis有哪些好处?
- 速度快:因为数据写在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
- 支持丰富数据类型:支持string , list , set , sorted set , hash
- 支持事务:操作都是都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行。
- 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除。
redis数据读写速度非常快,因为它把数据都读取到内存当中操作,而且redis是用C语言编写的,是最“接近“”操作系统的语言,所以执行速度相对较快。 - redis虽然数据的读取都存在内存当中,但是最终它是支持数据持久化到磁盘当中。
三、redisd的优缺点
redis本质上是一个Key-Value类型的内存数据库,很像memached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flash到硬盘上进行保存。
因为是纯内存,redis性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快的Key-Value DB。
redis的出色之处不仅仅是性能,redis最大的魅力是支持保存多种数据结构,此外单个Value的最大限制是1GB,不像memcached只能保存1MB的数据。同时redis可以持久化其数据
因此redis可以用来实现很多有用的功能。
redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写。
因此redis适合的场景主要局限在较小数据量的高性能和运算上。
四、redis和memcached的区别都有哪些?
- 存储方式:Memcached把数据全部存于内存之中,断掉之后会挂掉,数据不能超过内存大小。redis有部分存在硬盘上,这样能保证数据的持久性。
- 数据的支持类型:Memcached对数据类型支持相对简单。redis有复杂的数据类型
- 使用底层模型不同:他们之间底层实现方式以及客户端之间通信的应用协议不一样。redis直接自己构建VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
ps:在介绍redis时,会有重复的出现,当我们面试时,面对不同的问题,回答的内容是一样的。