很多时候,我们在面对一些热点数据的时候,通常会选择将热点数据放到redis中,以减少数据库的查询,减轻数据库的压力。但是如果我们使用redis的方式不对,那么可能导致系统的性能不升反降。
2. key设计不当导致产生了bigkey
什么是bigkey?
对于字符串类型来说单个value值(20k以上)过大,hash、list、set、zset元素个数过多(超过5000个)我们就认为它是一个bigkey。
如果存在bigkey,那么我们会导致我们查询key时过慢,网络拥塞,redis内存分配不均匀等问题。所以如果我们发现一个key过大的时候,那么我们就需要根据业务对它进行拆分,避免导致慢查询等问题。
3.AOF配置不合理
通常我们都会开启redis的AOF来完成redis数据的持久化,AOF有三种策略
appendfsync always:每次写入都刷盘,对性能影响最大,占用磁盘IO比较高,数据安全性最高
appendfsync everysec:1秒刷一次盘,对性能影响相对较小,节点宕机时最多丢失1秒的数据
appendfsync no:按照操作系统的机制刷盘,对性能影响最小,数据安全性低,节点宕机丢失数据取决于操作系统刷盘机制。
如果我们选择appendfsync always的话,虽然数据的安全性高,但是每次写入都要刷盘会导致redis的性能很大程度的降低,所以我们一般会选择appendfsync everysec的策略来对数据进行持久化。