关于缓存故障解决方案

问题背景
最近用PHP做了个API接口,为了性能所有数据先读取redis,当取出结果为空时再读取mysql,然后缓存至redis(常规操作)。
问题
昨天领导提出一个问题,当redis故障,宕机等根本连接不上的情况时,直接读取MySQL;并且希望可以在程序中设置一个故障连接的次数限制,比如连续访问5次都超时,直接略过redis,或者改用其他缓存,memcache等。等故障排除后再自动,或者手动的恢复到redis缓存。

领导提出这个要求可能是因为该接口直接面向C端,不希望用户看到空数据时的样子。

以前从来没有考虑过这种情况,毫无头绪,感觉在程序中实现起来比较复杂,求各位大牛指点。或者有什么更好的缓存故障后的解决办法。

评论 (0)链接2018-03-21 

使用 try catch 异常处理机制来处理即可。一般来说,正规的 PHP 的 redis 客户端都会有完善的异常提醒机制,当客户端连接不上 redis 服务器时会抛出相应的异常,你只需要在你使用 redis 的地方捕获这个异常,就可以在 catch 段里做相应的操作了,比如直接连接 MySQL 或者 使用 memcached。重试次数的做法也是类似。

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2019-02-13
德问是一个专业的编程问答社区,请 登录注册 后再提交答案