Redis面试笔记大全

整理的Redis笔记大全,非常的全,欢迎一起交流学习。

1.什么是redis?

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

 

2.Reids的特点  

1) Key-Value类型的内存数据库,

2)支持保存多种数据结构,

3)Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,

 

3.使用redis有哪些好处?   

(1) 速度快 
(2) 支持丰富数据类型,支持string,list,set,sorted set,
hash 
(3) 支持事务,

(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

 

4.redis相比memcached有哪些优势?   

(1) memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 
(2) redis的速度比memcached快很多

(3) redis可以持久化其数据

 

5.redis持久化的几种方式

1)、快照(snapshots),rdb策略
  默认开启,Redis把数据快照存放在磁盘上的二进制文件中,文件名为dump.rdb。你可以配置Redis的持久化策略,例如数据集中每N秒钟有超过M次更新,就将数据写入磁盘;或者你可以手工调用命令SAVE或BGSAVE。

下面是默认的快照保存配置

save 900 1

save 300 10

save 60 10000
2)、
AOF
  快照模式并不十分健壮,当系统停止,或者无意中Redis被kill掉,最后写入Redis的数据就会丢失。你可以在配置文件中打开AOF模式,每一秒持久化一次。

默认没开启,每秒一次,只要有写操作即备份系统


6.redis 最适合的场景  

(1)、会话缓存(Session Cache),购物车信息

(2)、全页缓存(FPC)

(3)、队列
(4),排行榜/计数器

(5)、发布/订阅

 

7.Redis支持的Java客户端都有哪些?

Redisson、Jedis

 

8.文章点击排行榜,由文章名称和点击次数构成,使用哪个数据类型比较方便?

zset,分数、排序(默认根据分数从小到大排序)

 

9.如何用string数据类型表达mysql中的一行数据?

可以将整行表示成一个json字符串

10.如果存储一个班学生的身份证,并且方便统计总个数,用哪个数据类型?

1)set,scard

2)hash,hlen

 

11.zset的分数是什么意思?

分数就是一个double类型的数字,比较精密。

 

12.如何根据分数大小倒序排列?

zrevrange

 

13.查找分数在80-90分之间的学生姓名

zrangbyscore kaoshi 80 90

 

14.如何立即(实时)备份?

save: 阻塞 Redis 主进程,直到保存完成为止

bgsave: fork 出一个子进程,异步备份

 

15.RDB默认配置文件名后缀是什么?

dump.rdb

 

16.如何开启AOF持久化?

appendonly yes 

 

17.你如何理解redis集群的水平扩展?

水平扩展/横向扩展,只需要增加/减少机器即可,原来的结构不需要改变。有16384个槽,这是可能需要重新划分槽。

 

18.解释CAP?

CAP理论

C:consistency(一致性):数据能在多个副本之间保持一致性

A:avalibility(可用性) :对于用户的每一个操作在一定时间段内都应该有响应

P:Partition-tolerence to partition(分区容错性):分布式网络中部分网络不可用时, 系统依然正常对外提供服务

三者不可共存,可用性和一致性是一对冤家,在容忍网络分区的前提下,要么牺牲数据的一致性,要么牺牲写操作的可用性。

redis满足AP,放弃了部分C,这是redis的CAP策略。

 

19.如何理解分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。

20.一台主库可以拥有多个从库,但是一个从库只能隶属于一个主库,对吗?

对,也就是说在主从架构中只有一个master

 

21.redis集群的负载均衡策略?

分槽

 

23.什么是守护进程?如何在守护进程模式下运行redis?

daemize yes

 

24.如何修改redis实例的运行端口?

port 6380

 

25.如何关闭redis?

shutdown save|unsave命令

./redis-cli -p 6379 shutdown

 

26.如何手动进行持久化?

save

bgsave

 

27.写出登录主机192.168.3.3上端口为7000密码为ads999的redis实例的命令?

redis-cli -h 192.168.3.3 -p 7000 -a ads999

 

28.如何获取一个key还有多长时间过期?

ttl keyname

-1 永不过期

-2 已经过期

5 还剩5秒过期

 

29.如何从第5个库中随机获取一个key的名称,写出命令?

select 4

randomkey

 

30.key值可以修改吗?如何能修改的话如何修改?

可以,rename oldname newname

 

31.如何获取第5个库内key的总个数?写出命令

select 4

dbsize

 

32.如何判断一个key的数据类型?

type

 

33.如何判断wangming是不是属于集合student中的元素?

SISMEMBER students wangming

 

34.如何为一个redis添加访问密码?

redis.conf

requirepass admin132

 

35.rdb持久化和aof持久化的不同之处?默认恢复时先读取哪种持久化文件?

先选择aof.

 

36.如果在一个主从复制架构中,为了提高整个架构的吞吐率,在master中持久化好还是在slave中持久化好?

slave

37.主从架构中,一个master可以有N多个slave,对吗?各个slave之间是什么关系?

1)第一种架构,一主多从,各个slave没有关系,但是数据各个slave最终一致。因为是异步复制,所以不保证实时一致。

2)第二种架构,级联关系,slave有关系、

 

38.主从架构中,master和所有slave的值最终都是一样的,对吗?

对。

 

39.一个redis集群至少要3个master,可以没有slave也可以有多个slave,对吗?

对,最小的配置时3个master,0个slave.

 

40.一个redis集群如果要求每个master必须有1个slave的话,该集群至少需要6个redis实例,对吗?

对。

 

41.解释一下主从之间的异步复制?

在复制的同时也可以响应客户端的请求,不必等待复制成功再响应用户。

异步复制代理的结果就是我们并不知道复制是否成功,不能100%确定是否复制成功,不是实时的。

 

42.集群中的master实例是彼此互联的,并且数据彼此同步,对吗

不对。彼此互联是对的,数据没有同步。槽的分配原理,数据存储在槽中。

 

43.如果在配置文件中禁用持久化后,执行save命令还会生成持久化文件吗?

会,不冲突。禁用持久化只是取消了自动持久化操作。

 

44.如果事务执行失败,返回值是什么?

1)如果在命令行中返回的是nil

2)如果在jedis客户端返回的是null

 

45.在jedis中执行事务,如果成功了,返回值是什么数据类型?怎么知道事务中第2个命令的返回值是多少?

jedis返回List对象,该list存着每一个命令的执行结果。get(1)

 

46.主从复制架构中,并不能保证主从实时复制,也不保证一定复制成功,对吗

对,异步复制。

 

47.简述集群的负载均衡原理?

通过对槽的分配达到负载均衡,首先槽的个数一定16384并且在master节点按照比较平均的算法将这些槽分配到

欢迎进入qq群:894294771,一起学习交流。

猜你喜欢

转载自blog.csdn.net/mengchuan6666/article/details/85858247