1、有MySQL不就用了吗?为什么要用Redis这种新的数据库?
主要是因为Redis具备高性能和高并发的两种特性。
高性能:假如用户第一次访问数据库中的某些数据。这个过程比较慢,因为是从硬盘上读取的。该用户访问的数据缓存中,这样下一次再访问这些数据的时候就可以直接从获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可!
高并发:直接操作缓存能够承受的请求是远远大于直接访问数据库的,所以我们可以考虑把数据库中的部分数据转移到缓存中去,这样用户的一部分请求会直接到缓存这样而不用经过数据库。
2、C++中Map也是一种缓存数据结构,为什么不用Map,而不选择Redis做缓存?
缓存分为本地缓存和分布式缓存
C++语言为例,STL自带的容器map来实现缓存,但只能实现本地缓存,它最主要的特点就是轻量以及快速,但是生命周期随着程序的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。
使用Redis或Memcached之类的称为分布式缓存,在多实例的情况下,各实例共享一份缓存数据,缓存具有一致性。使用Redis或Memcached优点所在,但它也有缺点,那就是需要保持Redis或者Memcached服务的高可用,整个程序架构上比较复杂。
3、Redis比Memcached的优势在哪里?
- Memcached所有的值均是简单字符串,Redis作为其替代者,支持更加丰富的数据类型。
- Redis的速度比Memcached快很多
- Redis可以持久化保存数据
4、单线程Redis为什么这么快?
原因有三:
- Redis的全部操作都是春内存的操作;
- Redis采用单线程,有效的避免了频繁的上下文切换;
- 采用了非阻塞I/O多路复用。