redis面试题目

1、什么是Redis?

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

2、Redis相比memcached有哪些优势?

            (1)redis具有丰富的数据类型,memcached只有简单的字符串

            (2)redis的查找速度比memcached快很多

            (3)redis可以对数据进行持久化(RDB方式和AOF方式)

3、Redis支持哪几种数据类型?

            (1)string(2)hash(3)list(4)set(5)zSet

4、Redis主要消耗什么物理资源?

            计算机内存

5、Redis的全称是什么?

            Remote Dictionary Server(远程数据服务)

6、Redis有哪几种数据淘汰策略?    

            redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:

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

7、Redis官方为什么不提供Windows版本?

8、一个字符串类型的值能存储最大容量是多少?

            Redis中字符串类型的Value最多可以容纳的数据长度是512M

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

           Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以Redis具有快速和数据持久化的特性。如果不将数据放到内存中,磁盘的I/O速度会严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。如果设置了最大使用的内存,则数据已有记录数达到内存限值后将不能继续插入新值。

10、Redis集群方案应该怎么做?都有哪些方案?

            (1)节点分配(2)主从复制

11、Redis集群方案什么情况下会导致整个集群不可用?

            任意一个主服务器DOWN掉都会使集群陷入瘫痪

12、MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?

  13、Redis有哪些适合的场景?

            会话信息,全局会话,用户配置信息,购物车,缓存数据

  14、Redis支持的Java客户端都有哪些?官方推荐用哪个?

            Redisson,Jedis,lettuce等等,官方推荐使用Redisson

15、Redis和Redisson有什么关系?

            Redisson是Redis的一个java客户端(还有Jedis,lettuce)

16、Jedis与Redisson对比有什么优缺点?

            Jedis是Redis的java实现客户端,其API提供了比较全面的Redis命令的支持;Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务‘管道、分区等Redis特性。Redisson的宗旨是促进使用者对Redis的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。

17、Redis如何设置密码及验证密码?

            验证密码:redis 127.0.0.1:6379> auth test123
            设置密码:redis 127.0.0.1:6379> config set requirepass test123

18、说说Redis哈希槽的概念?

            Redis 集群没有使用一致性hash, 而是引入了哈希槽的概念。

            Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽。这

            种结构很容易添加或者删除节点,并且无论是添加删除或者修改某一个节点,都不会造成集群不可用的状态。

            使用哈希槽的好处就在于可以方便的添加或移除节点。

            当需要增加节点时,只需要把其他节点的某些哈希槽挪到新节点就可以了;

            当需要移除节点时,只需要把移除节点上的哈希槽挪到其他节点就行了;

            在这一点上,我们以后新增或移除节点的时候不用先停掉所有的 redis 服务。

19、Redis集群的主从复制模型是怎样的?

            为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会

        有N-1个复制品。

20、Redis集群会有写操作丢失吗?为什么?

21、Redis集群之间是如何复制的?

22、Redis集群最大节点个数是多少?

23、Redis集群如何选择数据库?

24、怎么测试Redis的连通性?

25、Redis中的管道有什么用?

26、怎么理解Redis事务?

            redis中的事务是一组命令的集合,是redis的最小执行单位,一个事务要么都执行,要么都不执行。

27、Redis事务相关的命令有哪几个?

            discard命令(相当于回滚) exec命令(相当于提交)

            multi命令(相当于开启事务) unwatch(取消监视) watch(监视)

28、Redis key的过期时间和永久有效分别怎么设置?

            EXPIRE key 100 设置了过期时间,100秒后,key将自动被删除。

29、Redis如何做内存优化?

30、Redis回收进程如何工作的?

31、Redis回收使用的是什么算法?

32、Redis如何做大量数据插入?

33、为什么要做Redis分区?

34、你知道有哪些Redis分区实现方案?

35、Redis分区有什么缺点?

36、Redis持久化数据和缓存怎么做扩容?

37、分布式Redis是前期做还是后期规模上来了再做好?为什么?

38、Twemproxy是什么?

39、支持一致性哈希的客户端有哪些?

            zookeeper集群 Memcached

40、Redis与其他key-value存储有什么不同?

            Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类

            型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

41、Redis的内存占用情况怎么样?

42、都有哪些办法可以降低Redis的内存使用情况呢?

43、查看Redis使用情况及状态信息用什么命令?

            info

44、Redis的内存用完了会发生什么?

45、Redis是单线程的,如何提高多核CPU的利用率?

46、一个Redis实例最多能存放多少的keys?List、Set、Sorted Set他们最多能存放多少元素?

            理论上Redis可以处理多达232的keys,并且在实际中进行了测试,

            每个实例至少存放了2亿5千万的keys。

            任何list、set、和sorted set都可以放232个元素。

            换句话说,Redis的存储极限是系统中的可用内存值。    

47、Redis常见性能问题和解决方案?

            1.Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化。

       2.如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。

       3.为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网内。

       4.尽量避免在压力较大的主库上增加从库

       5.为了Master的稳定性,主从复制不要用图状结构,用单向链表结构更稳定,即主从关系

             为:Master<--Slave1<--Slave2<--Slave3.......,这样的结构也方便解决单点故障问题,实现Slave对Master的替换,

             即,如果Master挂了,可以立马启用Slave1做Master,其他不变。

48、Redis提供了哪几种持久化方式?

            (1)RDB方式(2)AOF方式

49、如何选择合适的持久化方式?

            RDB 非常适用于灾难恢复(disaster recovery):它只有一个文件,并且内容都非常紧凑,可以(在加密后)将它传送

        到别的数据中心,或者亚马逊 S3 中。

            AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最

        多只会丢失一秒钟的数据

50、修改配置不重启Redis会实时生效吗?




猜你喜欢

转载自blog.csdn.net/qq_35457674/article/details/80901394