小论文
不输入密码的话是不会给你看的!!!。
因为传统的关系型数据库如 Mysql 已经不能使用所有的场景, 如秒杀的库存扣减, APP首页的访问流量高峰等等, 都很容易让数据库崩溃。所以引入了缓存中间件。目前市面上比较常用的缓存中间件有 Redis 和 Memcached 综合考虑之后, 最后使用了 Redis。
字符串 String, 字典 Hash, 列表 List, 有序集合 SortedSet
如果大量的 Key 过期时间设置得过于集中, 到过期的那个时间点, Redis 可能会出现短暂的卡顿现象。严重的话会出现缓存雪崩,我们一般需要在时间上加一个随机值, 使得过期时间分散一些。
(电商首页经常会使用定时任务刷新缓存, 可能大量的数据失效时间都十分集中, 如果失效时间一样,又刚好在失效的时间点大量用户涌入, 就有可能造成缓存雪崩)
(先拿setnx来争抢锁, 抢到之后, 再用 expire 给锁加一个过期时间防止锁忘记释放)
如果在 setnx 之后执行 expire 之前进程意外 crash 或者要重启维护了, 此时可以用 set 指令的参数来把 setnx 和 expire 合成为一条指令来用
唉八股文,能背多少背多少吧。