0%

Redis 相关

一些 Redis 相关的问题

为什么使用 Redis?

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

Redis 有哪些数据结构?

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

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

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

Redis 分布式锁是什么

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