Redis问题多多

1.对Redis理解,使用什么场景?你用它干什么?解决什么问题?

就是一个远程的缓存,利用内存来用空间换取时间,当然对比本地缓存的优势当然是能分布式下共享数据。

用它来存储一些热点数据。解决了查询效率。

 

2.redis基础数据类型,底层如何实现?跳表?为什么单线程快?哪些可能会导致Redis慢,哪些命令会慢?

 

主要回答Redis慢(其实可以通过慢查询日志分析):

1.大key导致,数据结构不规范导致,分配时间很慢。

2.Redis查询命令不规范,扫描很多O(n),或者大量key失效导致,请求后都在被动淘汰。

3.持久化导致,fork阻塞,AOF刷盘阻塞(always机制导致每次写入都刷盘)

4.内存交换导致 

==> 可以通过以下查看是否内存交换

>redis-cli -p 6383 info server | grep process_id # 查询 redis 进程号
>cat /proc/4476/smaps | grep Swap # 查询内存交换大小
Swap: 0 kB 
Swap: 4 kB 
Swap: 0 kB 
Swap: 0 kB

有很多方法可以避免内存交换的发生。比如说:

  • 保证机器充足的可用内存
  • 确保所有Redis实例设置最大可用内存(maxmemory),防止极端情况下 Redis 内存不可控的增长。
  • 降低系统使用swap优先级,如echo10>/proc/sys/vm/swappiness

 

3.redis淘汰策略,主从,集群,高可用如何实现

 

Redis存在主动淘汰和被动淘汰的策略,一些情况下是主动和被动都是清理一些过期了的key,当然内存不够的时候,根据某些内存淘汰策略,会主动淘汰一些不设置过期时间的key。

被动淘汰策略:就是再次请求到该key的时候,发现已经过期了,那么再删去该key,返回null;

主动淘汰策略大概有:

1.LRU所有key

2.随机所有key

3.LRU设置过期时间key

4.随机设置过期时间key

5.不删,后续增加数据不允许。

 

Redis主从:

以前的版本还需要哨兵机制来监控,现在就主备切换即可。主从同步分全量和增量。PSYNC id offset这个指令比较重要,

 

 

 

 

1.redis分布式锁怎么实现的?可靠吗?有什么问题?redlock能解决吗?为什么?怎么优化?为什么用redis做?



 

4.Redis是怎么处理请求的?单机的qps是多少?如果一直get,你觉得限制点在哪?如何突破峰值qps?

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值