redis面试题

是什么

Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库

特点和优势

高性能,丰富的数据类型,支持通知、订阅、过期、持久化

有哪几种淘汰策略

volatile:lru,ttl,random

allkeys:lru,ttl,

数据呈现幂律分布:allkeys-lru

no-enviction

数据呈现平等分布:allkeys-random

    内存淘汰策略

volatile-lru,针对设置了过期时间的key,使用lru算法进行淘汰。
allkeys-lru,针对所有key使用lru算法进行淘汰。
volatile-lfu,针对设置了过期时间的key,使用lfu算法进行淘汰。
allkeys-lfu,针对所有key使用lfu算法进行淘汰。
volatile-random,从所有设置了过期时间的key中使用随机淘汰的方式进行淘汰。
allkeys-random,针对所有的key使用随机淘汰机制进行淘汰。
volatile-ttl,针对设置了过期时间的key,越早过期的越先被淘汰。
noeviction,不会淘汰任何数据,当使用的内存空间超过 maxmemory 值时,再有写请求来时返回错误。

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

512M

有哪些集群方案?

  1. twemproxy
  2. codis
  3. redis cluster3.0自带的集群

Redis有哪些适合的场景?

  1. 会话缓存
  2. 全页缓存(FPC)
  3. 队列
  4. 排行榜/计数器
  5. 发布/订阅

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

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

说说Redis哈希槽的概念?

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

Redis集群之间是如何复制的?

异步复制

Redis集群最大节点个数是多少?

16384个。

Redis如何做内存优化?

尽可能使用散列表(hashes)

Author: bkdwei