当前位置 博文首页 > 程序员springmeng:Redis面试笔记大全

    程序员springmeng:Redis面试笔记大全

    作者:[db:作者] 时间:2021-08-10 22:17

    整理的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