下面的导图是对Redis作为缓存可能遇到的一些问题的整理。
(导图主要是用来我对知识点的梳理,所以文字解释的相对较少,感兴趣的朋友可以找些视频深入研究或者留言一起讨论,共同进步)
另外,Redis作为缓存时,一定一定要注意bigkey的产生,bigkey可能会导致Redis阻塞,网络拥塞,过期删除时如果没有用异步删除时,也可能会阻塞Redis。字符串类型,单个value值一般认为超过10KB就是bigkey。非字符串类型,比如哈希、列表、集合、有序集合,它们的big体现在元素个数太多,hash、list、set、zset元素个数不要超过5000。可以通过分段存储,将value拆开。如果bigkey不可避免,也要思考一下要不要每次把所有元素都取出来(例如有时候仅仅需要hmget,而不是hgetall),删除也是一样,尽量使用优雅的方式来处理,并选择合适的数据结构。
所以,Redis作为缓存,不是存进去就万事大吉了,还要根据调用场景,缓存的内容,请求方式,QPS,合理设置过期时间等采取预防措施。