是什么
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
有哪些集群方案?
- twemproxy
- codis
- redis cluster3.0自带的集群
Redis有哪些适合的场景?
- 会话缓存
- 全页缓存(FPC)
- 队列
- 排行榜/计数器
- 发布/订阅
Redis支持的Java客户端都有哪些?官方推荐用哪个?
Redisson、Jedis、lettuce等等,官方推荐使用Redisson。
说说Redis哈希槽的概念?
Redis集群没有使用一致性hash,而是引入了哈希槽的概念,Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。
Redis集群之间是如何复制的?
异步复制
Redis集群最大节点个数是多少?
16384个。
Redis如何做内存优化?
尽可能使用散列表(hashes)