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

    Redis 支持哪几种数据类型?

    String、List、Set、Sorted Set、hashes

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

    内存。

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

    • noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大 部分的写入指令,但 DEL 和几个例外)
    • allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。
    • volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据 有空间存放。
    • allkeys-random: 回收随机的键使得新添加的数据有空间存放。
    • volatile-random: 回收随机的键使得新添加的数据有空间存放,但仅限于在过期集合的键。
    • volatile-ttl: 回收在过期集合的键,并且优先回收存活时间(TTL)较短的键,使得新添加的 数据有空间存放

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

    512M

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

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

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

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

    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)。

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

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

    说说 Redis 哈希槽的概念?

    Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽, 每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽,集群的每个节点负责一部分 hash 槽。

    怎么理解Redis事务?

    事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

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

    MULTI、EXEC、DISCARD、WATCH

    Rediskey的过期时间和永久有效分别怎么设置?

    EXPIRE和PERSIST命令。

    Redis如何做内存优化?

    尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存储到一张散列表里面.

    Redis回收进程如何工作的?

    一个客户端运行了新的命令,添加了新的数据。Redi检查内存使用情况,如果大于maxmemory的限制,则根据设定好的策略进行回收。一个新的命令被执行,等等。所以我们不断地穿越内存限制的边界,通过不断达到边界然后不断地回收回到边界以下。如果一个命令的结果导致大量内存被使用(例如很大的集合的交集保存到一个新的键),不用多久内存限制就会被这个内存使用量超越。

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

    RU算法

    Redis缓存的雪崩、穿透、击穿

    https://www.cnblogs.com/yangk1996/p/12686237.html

    Redsi的持久化机制

    https://www.cnblogs.com/yangk1996/p/12686148.html

    Redis集群管理

    https://www.cnblogs.com/yangk1996/p/12685822.html
    https://www.cnblogs.com/yangk1996/p/12656583.html

  • 相关阅读:
    centos7无法上网问题
    git 笔记记录
    高级 JsRender 模板功能
    Xamarin 示例Standard Controls报错:xamarin Failed to compile interface file. See Build Output for details
    Xamarin学习资源收集
    Bootstrap学习笔记1
    动态样式语言Less学习笔记
    html5的发展历程和由此引起的政治斗争
    网页引用本地电脑的字体 css设置浏览器会不显示的解决办法
    css引入方式优先级以及不同选择器的优先级区别
  • 原文地址:https://www.cnblogs.com/yangk1996/p/12864066.html
Copyright © 2011-2022 走看看