Redis的问答

Redis(Remote Dictionary server)
缓存穿透
缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的.
实际上来说就是一个key对应的值是空的。null.
解决方案1:
另外也有一个更为简单粗暴的方法(我们采用的就是这种),如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。
缓存雪崩
缓存雪崩是指在我们设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。
解决方案:
缓存的key过期时间可以随机取得!最好不要都设置成统一的过期时间!
缓存击穿
对于一些设置了过期时间的key,如果这些key可能会在某些时间点被超高并发地访问,是一种非常“热点”的数据。这个时候,需要考虑一个问题:缓存被“击穿”的问题,这个和缓存雪崩的区别在于这里针对某一key缓存,前者则是很多key。
解决方案
使用互斥锁!
redis 3.0以前使用SETNX
redis 3.0以后使用set set sku:3:info ok px 10000 nx
jedis.exists(skuInfoKey)

1.Redis简介
Redis本质是一个key-value类型的内存数据库,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存
2.Sava 和 bySave
Save: 只管保存,其他不管,全部阻塞
Bysave: fork的子进程,主动触发
3.Redis和Memcached区别
1)Memcached能做的Redis大部分也能做
2)Redis和Memcached数据都存储在内存中,但Redis支持内存数据持久化
3)除key-value模式外,redis支持多种数据库结构的存储,如list,string,hash,zset,set
4)Redis是单线程+多路IO复用
4.一个string类型的值能存储最大容量是多少?
512MB
5.Redis主要消耗什么物理资源??
内存
6.Redis把数据放在内存中的原理加好处
Redis为了最快的读写速度,将数据放入内存中,并通过异步的方式将数据写入磁盘,如果不放入内存,磁盘IO速度会严重影响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的高可用,高性能??
做redis集群
9.Redis集群方案什么情况下导致整个集群不可用??
有A,B,C三个节点,如果节点B失败了(没有使用复制模型),整个集群就会缺少5501-11000这个范围的槽而不可用,导致集群不可用
10.MySQL里有2000w数据,redis只存20w数据,如何保证 redis中的数据时热点数据??
Redis内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略
11.Redis数据淘汰策略
1)Noeviction: 返回错误,当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分写入指令,但DEL和几个例外)
2)allkeys-lru: 尝试回收最少使用的键(LRU),使新添加的数据用空间存放
3)volatile-lru: 尝试回收最少使用的键(LRU),但权限在过期集合的键,使新添加的数据有空间存放
4)allkeys-random: 回收随机的键
5)volatile-random: 回收随机的键,权限在过期集合的键
6)volatile-ttl: 回收在过期集合的键,并优先回收存活时间(TTL)较短的键
12.Redis的应用场景
1)会话缓存(session cache)
2)排行榜/计算器
3)全页缓存(FPC)
4)队列
5)发布/订阅
13.Redis和redisson关系
Redisson是一个高级的分布式协调redis客户端,能帮助用户在分布式环境中轻松实现一些java对象
14.Redis配置密码和验证密码
1)设置密码: config set requirepass 123456
2)授权密码: auth 123456
15.Jedis和redis的优缺点
Jedis是redis的java实现的实现端,其API提供了比较全面的redis命令的支持,redisson实现了分布式和可扩展的java数据结构,和jedis相比,功能较为简单,不支持字符串操作,不支持排序,事务,管道,分区等redis特性
16.Redis哈希槽的简介
Redis集群没有使用一致性hash,而是引入了哈希槽的概念,redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模,来决定放置那个槽,集群的每个节点负责一部分hash槽
17.Redis集群的主从复制模型是怎样的??
为了使在部分节点失败或者大部分节点无法通信的情况下集群依然可用,所以集群使用了主从复制,每个节点都会有n-1个复制品
18.Redis集群之间如何复制的??
异步复制的
19.Redis集群的最大节点数是多少
16384
20.Redis集群如何选择数据库
默认0号库,一共16个库
21.怎么测试redis的连通性??
Ping
22.Redis事务
事务是一个单独的隔离操作。事务中的所有命令都会序列化,按顺序地执行,事务在执行过程中,不会被其他客户端发送来的命令请求所打断。
事务是一个原子操作: 事务中的命令要么全部执行,要么全部不执行
Ps: 编译过程错误(MULTI),全部不执行
运行时错误(Exec),只会不执行错误的那个命令, 其他都会执行
23.Redis事务命令
1)MULTI 组队
2)Exec 执行组队中的所有命令
3)Discard
4)Watch
24.redis key的过期时间和永久有效设置
1)Expire 失效时间设置
2)Persist 永久有效
25.Redis内存优化
尽可能使用散列表(hash),散列表(是说散列表里面存储的数少)使用内存非常小,所以应该尽可能的将你的数据模型抽象到一个散列表里面。例如web系统中有一个对象,不要为这个用户的name,email,age等设置单独的key,而应该把这个这个用户的所有信息一起存储在一张散列表里面
26.Redis回收算法是什么,如何工作的??
LRU算法
1)一个客户端运行了新的节点,添加了新的数据
2)Redis检查内存使用情况,如果大于max memory的限制,则根据设定好的策略进行回收
3)一个新的命令被执行等
27.Redis如何做大量数据插入
Redis2.6开始,redis-cli支持新的pipe mode模式,用于大量数据插入
28.Redis分区实现方案和分区特点
1)客户端
2)代理分区
3)查询路由
缺点:
①.涉及多个key的操作通常不会被支持
②.同时操作多个key,则不能使用redis事务
③.分区时动态扩容或缩容可能非常复杂
29.Redis持久化数据和缓存怎么扩容?
1)Redis当做缓存使用:
使用一致性哈希实现动态扩容缩容
2)Redis当做持久化使用:
必须使用固定的keys-to-nodes映射关系,节点数一旦确定不能变化
30.支持一致性哈希的客户端有哪些??
Redis-rb,predis等
31.查看redis使用情况及状态信息用什么命令
Info
32.分布式redis是前期做还是后期规模上来了再做?
既然redis是如此的轻量(单实例只使用IMB),为防止以后的扩容,最好的办法就是一开始就启动较多实例,即便只有一台服务器,也可以一开始就让redis以分布式的方式运行,使用分区,在同一台服务器上启动多个实例
33.Redis提供了几种持久化方式??
1)RDB
2)AOF
3)两种都开启是,优先使用AOF文件
34.修改配置不重启Redis会生效吗?
许多配置选项可以通过config set命令进行修改,而无需执行任何形式的重启。但偶尔重启是必须的,如升级redis到最新版,或者config命令还不支持的配置参数的时候
35.Redis事务的两种锁机制
1)悲观锁
2)乐观锁
36.Redis事务的三个特性
1)单独的隔离操作
2)没有隔离级别的概念
3)不保证原子性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值