提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
工作一直只是简单的应用redis, 目前面试的时候常常在redis 方面被问的哑口无言,特作此篇记录redis 进阶,与诸君共勉;
提示:以下是本篇文章正文内容,下面案例可供参考
一、redis 面试常见问题
问题一 : Redis 是单线程还是多线程? 单线程为何速度这么块?
回答 :
- 单线程,在redis 5.0 版本前连接是单线程,5.0 版本后连接是多线程;此处的连接指代 处理和客户端的连接;
但在redis 执行命令的时候,比如 get/set 这些是单线程。 - 操作速度快是因为 操作的是内存,而非磁盘;另外也是基于redis 高效的数据结构,hash 算法;
问题二 : Redis key 过期了 为什么内存还没释放?
回答:
3. redis 采取的过期策略是惰性删除,和定时删除策略;
惰性删除:是指在key 过期了,不会马上删除,需要在下一次取到当前数据的时候执行删除;
定时删除: 是指在(一定的时间内? 多久的时间)执行一次删除,注意,并不是删除所有的过期key,是删除大部分过期key;
问题三 : Redis 有哪些架构模式?优缺点如何?
回答:
4. 主从架构
一般都是一主 2 从,主节点负责承担读写请求,同时配置同步策略,主节点的数据往从节点同步,当主节点挂了的时候,需要手动运维将从节点数据切换成主节点;
-
哨兵架构
客户端在访问redis 的时候先访问哨兵,哨兵告知客户端主节点的信息,让后 客户端访问redis;
哨兵集群监听redis 主从,在redis 主从发生问题的时候,哨兵从从节点(slave)选举出一个作为新的主节点;选举算法,无非就是那个slave 的节点数据最新,当一个主从半数投票给这个节点时,当前节点可作为主节点; -
集群架构
问题四 : Redis 持久化策略一般如何设置?集群为何至少需要3个master 节点?
回答:
一般都是 master 不做持久化,由slave 节点做持久化,这样即使在 master 出问题的时候,也能由选举算法选出新的节点;一般持久化策略是AOF,一秒同步一次;这样即使丢了缓存数据,也在一秒内;对业务来说是可以忍受的; mater 的效率更高;
redis 集群模式下的选举,一个slave 节点要想作为主节点,必须半数以上的 master 节点投票 才能升级成主节点;
二、redisson 分布式锁
1. redisson 分布式锁 的应用
代码如下(示例):
//阻塞式等待。默认加的锁都是30s
//1)、锁的自动续期,如果业务超长,运行期间自动锁上新的30s。不用担心业务时间长,锁自动过期被删掉
//2)、加锁的业务只要运行完成,就不会给当前锁续期,即使不手动解锁,锁默认会在30s内自动过期,不会产生死锁问题
RLock lock = redissonClient.getLock(seckillId);
//解锁
lock.unlock();
2.redisson 分布式锁 的原理
代码如下(示例):
该处使用的url网络请求的数据。
3. 缓存数据库双写一致性问题说明
4. 缓存数据库双写一致性问题解决方案
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。