当前位置 博文首页 > 程序员springmeng: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,一起学习交流。
?
cs