redis1
1 什么是redis
redis本质上是一种key-value类型的内存数据库,很像memcached,数据库统统加载到内存中进行操作,定期通过异步操作将数据库数据flush到硬盘.
redis性能非常高,每秒可以进行超过十万次读写操作,此外redis支持多种数据类型的保存,使它可以实现很多功能,比如
利用它的list做FIFO双向队列,实现轻量级,高性能消息队列服务。利用set实现tag系统等。
主要缺点:数据库容量受物理内存的限制,无法进行海量数据的高性能读写。
2 Redis相比memcached有哪些优势?
1 memcached中所有的数据都是简单的字符串,redis支持更多的数据类型
2 redis的速度比memcached快的多。
3 redis可以持久化数据。
3 Redis支持哪几种数据类型?
string,list,hash,set,zset
4 Redis主要消耗什么物理资源?
内存
5 Redis的全称是什么?
Remote Dictionary server
6 Redis有哪几种数据淘汰策略?
六种
1 noeviction: 返回错误。当内存限制达到,客户端尝试执行使内存被更多使用的命令时(大部分写入命令,但不包括del,和其他几个命令)
2 allkeys-lru: 尝试回收最少使用的键(LRU),使新添加的数据有空间存放。
3 volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使新添加的数据有空间存放。
4 allkeys-random: 回收随机的键,使新添加的数据有空间存放。
5 volatile-random: 回收随机的键,但仅限于过期集合中的键
6 volatile-ttl : 回收过期集合的键,并优先回收存活时间短(ttl)的键。
Redis过期键淘汰策略
7 Redis集群方案应该怎么做?都有哪些方案?
1 twemProxy方案,大致概念是,它类似一个代理方式,与普通redis的使用无任何差别,设置好它下属的多个redis实例后,只需在原先需要连接redis端口的地方,改为连接twemProxy.它以代理的方式接收请求,并通过一致性hash算法转移给具体的redis.将结果再返回twemProxy
使用方式简便(相对redis只需修改连接端口),对旧项目扩展的首选。
问题: twemProxy自身单端口实例的压力,当进行一致性hash后,对redis节点改变时候的计算值的改变,数据无法自动移动到新的节点。
2 codis方案,目前使用最多的集群方法,基本与twemProxy的效果一致,但它可以在节点数量改变的情况下,将旧数据恢复到新hash节点。
3 redis-cluster3.0自带的集群,它的特点在于,分布式不是一致性hash,而是hash槽的概念,并且自身支持节点设置从节点。
4 在业务代码层实现。起几个毫无关联的redis实例,在代码中对key进行hash计算,并到相应的redis实例上操作。该方式对hash层要求较高。主要考虑问题:失效节点替代算法方案,振动数据自动恢复脚本,实例的监控等。
8 Redis集群方案什么情况下会导致整个集群不可用?
有A,B,C三个节点的集群,在没有复制模型的情况下,如果B失效,那么整个集群就会以为缺少5501-11000范围的槽而不可用。
9 MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据?
redis内存数据集的大小上升到一定大小的时候,就会施行数据淘汰策略。
10 Redis有哪些适合的场景?
会话缓存/全页缓存
消息队列
排行榜/计数器
发布/订阅
11 Redis支持的Java客户端都有哪些?官方推荐用哪个?
Redisson,Jedis,lettuce,官方Redisson
12 Redis和Redisson有什么关系?
Redisson是高级的分布式协调redis客户端,能够帮助用户在分布式环境下轻松创建一些java对象。(list,ListMultimap,set,sortedset,map,concurrentMap,queue,
blockingqueue)
13 Jedis与Redisson对比有什么优缺点?
Jedis是Redis的java实现的客户端,其API提供了比较全面的redis的命令支持。
Redisson实现了分布式和可扩展性的java数据结构,与Jedis相比,功能比较简单,不支持对字符串的操作,不支持排序,事务,管道,分区等redis的特性。
Redisson的宗旨是促进使用者对Redis的关注分离,让使用者的更多精力集中的放在处理业务逻辑上。
14 Redis如何设置密码及验证密码?
设置密码:config set requirepass 123456
授权密码: auth 123456
15 说说Redis哈希槽的概念?
redis集群没有采用一致性hash,而是hash槽的概念,集群一共有16384个槽,每个key经过CRC16校验后对16384取模决定放置在哪个槽,每个节点负责一部分hash槽。
16 Redis集群的主从复制模型是怎样的?
为了使部分节点失效或者大部分节点无法通信时集群依然可用,redis集群采用主从复制模型,每个节点都有N-1的复制品。
17 Redis集群会有写操作丢失吗?为什么?
会,redis无法保证数据的强一致性,因此集群在特定情况下,存在写操作丢失。
18 Redis集群之间是如何复制的?
异步复制
19 Redis集群最大节点个数是多少?
16384
20 Redis集群如何选择数据库?
redis集群目前无法选择数据库,默认在0数据库
21 怎么测试Redis的连通性?
ping
22 Redis中的管道有什么用?
redis管道技术,可以在服务端未响应时,客服端继续向服务端发送请求,并一次性读取所有服务端的响应。