Redis常见面试题

1.什么是redis?

   Redis 是一个基于内存的高性能key-value数据库。 

  2.Reids的特点  

   Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性

     能最快的Key-Value DB。

   Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消

     息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。

   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. mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据

    相关知识:redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略(回收策略)。redis 提供 6种数据淘汰策略:

  • volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
  • volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
  • volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
  • allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
  • allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
  • no-enviction(驱逐):禁止驱逐数据

9.为什么redis需要把所有数据放到内存中? 

   Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。

   如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。

14.redis持久化的几种方式

1、快照(snapshots)
  缺省情况情况下,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb。你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据写入磁盘;或者你可以手工调用命令SAVE或BGSAVE。
  工作原理
  . Redis forks.
  . 子进程开始将数据写到临时RDB文件中。
  . 当子进程完成写RDB文件,用新文件替换老文件。
  . 这种方式可以使Redis使用copy-on-write技术。
2、AOF
  快照模式并不十分健壮,当系统停止,或者无意中Redis被kill掉,最后写入Redis的数据就会丢失。这对某些应用也许不是大问题,但对于要求高可靠性的应用来说,
  Redis就不是一个合适的选择。
  Append-only文件模式是另一种选择。
  你可以在配置文件中打开AOF模式

Redis有哪些数据结构?  

字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。 
存对象时是将对象序列化。

原文地址:https://www.cnblogs.com/xiaolovewei/p/9437953.html