1、什么是Redis?

Redis全称为:Remote Dictionary Server(远程数据服务),是一个基于内存的高性能key-value数据库。

2、Redis的数据类型?

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

我们实际项目中比较常用的是string,hash如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。

Redis Module:BloomFilter,RedisSearch,Redis-ML。

3、使用Redis有哪些好处?

(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

(2) 支持丰富数据类型,支持string,list,set,Zset,hash等

(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行

(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除


4、Redis相比Memcached有哪些优势?

(1) Memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型

(2) Redis的速度比Memcached快很多

(3) Redis可以持久化其数据

5、Memcache与Redis的区别都有哪些?

(1)、存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,这样能保证数据的持久性。

(2)、数据支持类型 Memcache对数据类型支持相对简单。 Redis有复杂的数据类型。

(3)、使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

6、Redis是单进程单线程的?一个字符串类型的值能存储最大容量是多少?

Redis是单进程单线程的,redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。

一个字符串类型的值能存储最大容量是512M。

7、Redis的持久化机制是什么?各自的优缺点?

Redis提供两种持久化机制RDB和AOF机制:

1)RDB(Redis DataBase)持久化方式: 是指用数据集快照的方式(半持久化模式)记录redis数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。

 优点:   

  • 只有一个文件dump.rdb,方便持久化。   
  • 容灾性好,一个文件可以保存到安全的磁盘。   
  • 性能最大化,fork子进程来完成写操作,让主进程继续处理命令,所以是IO最大化。(使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能)
  • 相对于数据集大时,比AOF的启动效率更高。 

缺点: 数据安全性低。(RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候)

2)AOF(Append-only file)持久化方式: 是指所有的命令行记录以redis命令请求协议的格式(完全持久化存储)保存为aof文件。 

 优点:   

  • 数据安全,aof持久化可以配置appendfsync属性,有always,每进行一次命令操作就记录到aof文件中一次。   
  • 通过append模式写文件,即使中途服务器宕机,可以通过redis-check-aof工具解决数据一致性问题。   
  • AOF机制的rewrite模式。(AOF文件没被rewrite之前(文件过大时会对命令进行合并重写),可以删除其中的某些命令(比如误操作的flushall)) 

 缺点:   

  • AOF文件比RDB文件大,且恢复速度慢。   
  • 数据集大的时候,比rdb启动效率低。