08-Redis面经必威体育精装版面试题.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
什么是NoSQL?什么是Redis? NoSQL的全称是Not-Only SQL,指的是非关系型数据库,它是关系型数据库的补充,没有表与表之间的关系,主要用于海量数据的处理问题。 Redis (REmote DIctionary Server): 是基于C 语言编写的一个开源的单线程的高性能键值对(key-value)数据库。可以用来做缓存(长久保存,且不经常变化的数据),处理即时信息(临时性的,经常变化的),解决服务器集群中session分离问题(本质还是处理即时信息)。 除了Redis,你还了解其它的NoSQL吗? nosql数据库有很多,比如HBase、MongoDB、Memcached等,相比于其他的nosql而言,效率高,数据结构比较丰富。 MongoDB是高性能、无模式的文档型数据库(一个文档相当于关系数据库中的一条记录,格式是xml或者json等),支持二级索引,非常适合文档化格式的存储及查询。MongoDB的官方定位是通用数据库,确实和MySQL有些像,现在也很流行,但它还是有事务、join等短板,在事务、复杂查询应用下无法取代关系型数据库。但MongoDB性能使用庞大数据的查询,但不适合用于临时存储的缓存,如果将数据做缓存使用,还是Redis性能更高。 Redis是内存型Key/Value系统,读写性能非常好,支持操作原子性,很适合用来做高速缓存。 HBase存储容量大,一个表可以容纳上亿行、上百万列,可应对超大数据量要求扩展简单的需求。 2.1、redis与Memcached的区别是什么?为什么不选Memcached? (1)memcached所有的值均是简单的字符串,且只支持k/v类型,redis作为其替代者,支持更为丰富的数据类型。 (2) (3) redis可以持久化其数据,memcached只用做缓存提升性能,不能做持久化。 ? ? (4)memcached存储数据有限制:1M 【大于1M,认为就行分割】(内存碎片) (5)memcached集群数据没有复制和同步机制(崩溃不会影响程序,会从数据库中取数据)。 ? (6)memcached内存不能及时回收,它只有?LRU(算法)这一种方式,而redis有多种内存回收方式。 Redis的数据类型有哪些?它的数据操作是怎么样的? Redis有5种主要数据类型:string、hash、list(有序、可重复)、set(无序、不可重复)、zset(不可重复,基于score实现排序) 数据操作: Redis中的数据存储方式是key-value形式; Redis不能保存JAVA对象,需要转为JSON对象后存入Redis。 请列举几个常用的Redis指令。 Set、del、get、ping、select index(切换数据库)、keys(查询key) Redis为什么存取速度那么快? ①完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于 HashMap,HashMap 的优势就是查找和操作的时间复杂度都是O(1); ②数据结构简单,对数据操作也简单,Redis 中的数据结构是专门进行设计的; ③采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗; ④使用多路 I/O 复用模型,非阻塞 IO; ⑤使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis 直接自己构建了 VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求; 说说Redis的持久化方式有哪些? 有两种:RDB和AOF。 RDB是二进制快照形式,数据体量小,保存效率高,但丢失风险也较大,因为它是定时定量更改才会自动持久化,无法实时存储,如果在快照之前丢失,则无法找回。 AOF是过程命令形式,数据体量大(可以用AOF重写解决该问题),效率低于RDB,记录每个操作,存储格式也更复杂,但数据相对完整(最快可以每秒同步一次),且弥补了RDB不能实时存储的缺点。 6.1、AOF数据体量大,那有什么办法可以解决这个问题吗? Redis中引入了AOF重写机制可以压缩文件体积——执行压缩命令即可。 AOF重写可以降低磁盘占用量,也能提高数据恢复效率,它会对同一数据的多条写命令合并为一条写命令,且为了防止数据量过大造成缓冲区溢出,每条指令最多为64个元素。 AOF重写其实是一个同步开启的子进程,Redis执行指令时,子进程也会开启重写,主进程会将写入的数据同步到子进程,子进程则开始重写AOF文件,写完后再返回给主进程,完成AOF重写。 选用:如果对数据非常敏感用AOF,如果追求大数据集的恢复速度选RDB。

文档评论(0)

188****0747 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档