前言

对redis的使用,想必做过后端开发的同学都不陌生,redis为key/value非关系型数据库,使用起来简单高效,支持的数据类型也比较丰富,几乎在日常开发中没有不涉及的;

但如果对redis使用比较深入的话,还需要综合考虑多方面的因素,比如使用redis时如何兼具高效与性能,如何设计合理的key以达到存取时最高效等等,这都是应该考虑的,下面结合redis中一个比较简单但也容易的问题,关于redis的键值设计做一个全面的探讨;

Redis使用中不规范的现象

  • Redis 存储的key命名不规范,比较随意;
  • Redis 被当成存储库使用,存在数据丢失风险,且无重新加载方案;
  • Redis 缓存key,未设置过期时间, 缓存低频数据占用大量内存, 进而导致服务崩溃;
  • Redis 缓存大量big key, 应用获取时会占用大量网络带宽,删除也容易造成阻塞;
  • Redis 客户端使用不当,导致其它客户端连接timeout, 原因可能客户端密码错误,且没有使用连接池,大量连接重试导致系统端口资源耗光;
  • Redis 客户端命令使用不当,导致大量的慢查询,影响其它应用业务,比如在业务高峰期时使用 keys* 或flushall 这样的命令;

Redis 使用业务场景推荐与建议

  • 高并发场景:热点数据缓存, 可提升系统整体响应速度,降低数据库IO压力 ;