zoukankan      html  css  js  c++  java
  • 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。 
    存对象时是将对象序列化。

  • 相关阅读:
    吴裕雄 python深度学习与实践(1)
    吴裕雄 python 机器学习-Logistic(1)
    吴裕雄 python 熵权法确定特征权重
    【Uva 1252】Twenty Questions
    【玲珑杯 round#18 B】图论你先敲完模板
    【Uva 10817】Headmaster's Headache
    【玲珑杯 round#18 A】计算几何你瞎暴力
    【Uva 12128】Perfect Service
    【UVa 12186】Another Crisis
    【Uva 10003】Cutting Sticks
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/9437953.html
Copyright © 2011-2022 走看看