0%

一些 Redis 相关的问题

为什么使用 Redis?

因为传统的关系型数据库如 Mysql 已经不能使用所有的场景, 如秒杀的库存扣减, APP首页的访问流量高峰等等, 都很容易让数据库崩溃。所以引入了缓存中间件。目前市面上比较常用的缓存中间件有 Redis 和 Memcached 综合考虑之后, 最后使用了 Redis。

Redis 有哪些数据结构?

字符串 String, 字典 Hash, 列表 List, 有序集合 SortedSet

如果有大量的 Key 需要设置同一时间过期, 一般需要注意什么?

如果大量的 Key 过期时间设置得过于集中, 到过期的那个时间点, Redis 可能会出现短暂的卡顿现象。严重的话会出现缓存雪崩,我们一般需要在时间上加一个随机值, 使得过期时间分散一些。
(电商首页经常会使用定时任务刷新缓存, 可能大量的数据失效时间都十分集中, 如果失效时间一样,又刚好在失效的时间点大量用户涌入, 就有可能造成缓存雪崩)

Redis 分布式锁是什么

(先拿setnx来争抢锁, 抢到之后, 再用 expire 给锁加一个过期时间防止锁忘记释放)
如果在 setnx 之后执行 expire 之前进程意外 crash 或者要重启维护了, 此时可以用 set 指令的参数来把 setnx 和 expire 合成为一条指令来用

说一说七层模型,各层都是干什么的?有哪些协议?

  1. 物理层:负责最后讲信息编码成电流脉冲或者其他信号用于网上传输;
  2. 数据链路层:过物理网络链路提供数据传输。不同的数据链路层定义了不同的网络和协 议特征,其中包括物理编址、网络拓扑结构、错误校验、数据帧序列以及流控;
  3. 网络层:负责在源和终点之间建立连接;
  4. 传输层:向高层提供可靠的端到端的网络数据流服务;
  5. 会话层:建立、管理和终止表示层与实体之间的通信会话;
  6. 表示层:供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息 可以被另一个系统应用层识别;
  7. 应用层:OSI 的应用层协议包括文件的传输、访问及管理协议(FTAM) ,以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等;