zoukankan      html  css  js  c++  java
  • Redis面试题

    1、Redis?

    是什么?

    Redis(Remote Dictionary Server)是一个开源的底层使用C语言编写的key-value存储数据库

    为什么要用?优缺点?

    1)性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

    2)丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

    3)原子性 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

    4)丰富的特性 – Redis还支持发布订阅(publish/subscribe), 通知, key 过期等等特性

    缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。

    什么时候要用?使用场景?

    1)会话缓存(Session Cache)

    2)全页缓存(FPC)

    3)队列

    4)排行榜/计数器

    5)发布/订阅

    详细请看https://www.jianshu.com/p/36a646cef11a

    2、Redis有哪些数据结构?

    支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set(无序集合)、zset(sorted set:有序集合)

    如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog、Geo、Pub/Sub。

    如果你说还玩过Redis Module,像BloomFilter,RedisSearch,Redis-ML,面试官得眼睛就开始发亮了。

    3、redis 事务?常见命令?

    单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。

    事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

    4、为什么要用 redis 而不用 map/guava 做缓存?

    缓存分为本地缓存和分布式缓存。以 Java 为例,使用自带的 map 或者 guava 实现的是本地缓存,最主要的特点是轻量以及快速,生命周期随着 jvm 的销毁而结束,并且在多实例的情况下,每个实例都需要各自保存一份缓存,缓存不具有一致性。使用 redis 或 memcached 之类的称为分布式缓存,在多实例的情况下,各实例共用一份缓存数据,缓存具有一致性。缺点是需要保持 redis 或 memcached服务的高可用,整个程序架构上较为复杂。

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

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

    6、Redis和Redisson有什么关系?

    Redisson是一个高级的分布式协调Redis客服端,能帮助用户在分布式环境中轻松实现一些Java的对象 (Bloom filter, BitSet, Set, SetMultimap, ScoredSortedSet, SortedSet, Map, ConcurrentMap, List, ListMultimap, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, ReadWriteLock, AtomicLong, CountDownLatch, Publish / Subscribe, HyperLogLog)。

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

    Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持;

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

    8、Redis的持久化是什么?

    RDB持久化:该机制可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。

    AOF持久化:记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。AOF文件中的命令全部以Redis协议的格式来保存,新命令会被追加到文件的末尾。Redis还可以在后台对AOF文件进行重写(rewrite),使得AOF文件的体积不会超出保存数据集状态所需的实际大小。

    AOF和RDB的同时应用:当Redis重启时,它会优先使用AOF文件来还原数据集,因为AOF文件保存的数据集通常比RDB文件所保存的数据集更完整。

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

    512M

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

    设置密码:config set requirepass 123456

    授权密码:auth 123456

    未完待续......

    参考链接:

    https://blog.csdn.net/yangzhong0808/article/details/81196472

    https://www.jianshu.com/p/36a646cef11a

    https://www.jianshu.com/p/65765dd10671

    动力节点 http://www.bjpowernode.com/tutorial_baseinterviewquestions/225.html

    希望本文章对您有帮助,您的转发、点赞是我的创作动力,十分感谢。更多好文推荐,请关注我的微信公众号--JustJavaIt
  • 相关阅读:
    上传图片预览--图片上传后显示在某个模块中
    商品规格选择--添加背景色,并显示已选规格
    jquery选项卡
    swiper轮播图--兼容IE8
    点击图片查看大图--以弹框的形式显示在屏幕正中间
    百度地图API首页 -- 鼠标经过:类似翻页效果和 类似锚点链接效果
    别踩白块
    Jersey(1.19.1)
    Table of Contents
    Jersey(1.19.1)
  • 原文地址:https://www.cnblogs.com/liaowenhui/p/12130814.html
Copyright © 2011-2022 走看看