redis 面试题
Posted xiuxiu55
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 面试题相关的知识,希望对你有一定的参考价值。
1.redis介绍:
1、redis 是一个基于key_value 的内存数据库。
2、支持的数据类型包括不限于: string,hash,set,sort-set,list。
3、redis分布式锁:redis 分布式锁主要基于setnx命令,setnx:不存在则创建, 存在则不做任何操作。
如果一个持有锁的客户端失败或崩溃了不能释放锁,该怎么解决?
答:给锁设置一个过期时间,可以通过两种方法实现:通过命令 “setnx 键名 过期时间 “;或者通过设置锁的expire时间,让Redis去删除锁。
4、一个字符串类型的值能存储最大容量是多少?
512M
5、Redis事务相关的命令有哪几个?
MULTI、EXEC、DISCARD、WATC
6、Redis key的过期时间和永久有效分别怎么设置?
EXPIRE和PERSIST命令。
7、Redis 持久化机制:
Redis是一个支持持久化的内存数据库,通过持久化机制可以将内存中的数据同步到硬盘中来保证数据的持久化,当redis重启后将硬盘文件重新加载到内存。
RDB是Redis默认的持久化方式。按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。即Snapshot快照存储,对应产生的数据文件为dump.rdb,通过配置文件中的save参数来定义快照的周期。( 快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。)
AOF:Redis会将每一个收到的写命令都通过Write函数追加到文件最后,类似于mysql的binlog。当Redis重启是会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。
当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。
8、memcache和redis的区别?
1)、存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 Redis有部份存在硬盘上,redis可以持久化其数据
2)、数据支持类型 memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 ,提供list,set,zset,hash等数据结构的存储
3)、使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
4). value 值大小不同:Redis 最大可以达到 512M;memcache 只有 1mb。
5)redis的速度比memcached快很多
6)Redis支持数据的备份,即master-slave模式的数据备份。
9、单线程的redis为什么这么快
1)、纯内存操作
2)、单线程操作
3)、非阻塞IO多路复用机制
10、redis的过期策略和内存淘汰机制
1) redis采用定期删除和惰性删除的策略。
定期删除:redis每隔100ms删除一次过期的key,并且是随机抽查
惰性删除:当你获取某个key的时候, redis会检查一下,这个key是否是过期了,如果过期了就会删除。
内存淘汰机制:
maxmemory-policy volatile-lru
以上是关于redis 面试题的主要内容,如果未能解决你的问题,请参考以下文章