美文网首页
Redis使用规范

Redis使用规范

作者: 小懒要死了 | 来源:发表于2017-11-29 17:25 被阅读0次

# ****Redis使用规范****

一:书写本规范的背景,目的,原因,意义等虚化的内容全部省略。制定本规范只是为了减少因滥用,乱用,误用造成的生产,研发事故

二:Redis使用场景分析及使用建议

1)、纯Cache使用,主要是key->value的使用,这个场景主要是考虑减少数据库的读压力减少数据库的QPS,所以这部分key必须设置超时时间!因为若不设置,这些Key会一直占用内存不释放,造成极大的浪费,而且随着时间的推移会导致内存占用越来越大,直到达到服务器内存上限!另外Key的超时长短要根据业务综合评估,而不是越长越好!

2)、作为限流中间件使用,如保存中奖信息,作为已中奖用户限制;如保存奖品数量信息,作为数量限制,防止减少时扣减超出限制。这部分数据往往会使用hash,set数据,这部分数据应该在某次活动结束后,对里面的内容和信息进行落地,然后删除。

3)、作为队列使用,包括限流队列用户秒杀场景,或者任务队列用于程序异步化。这里主要用到list,用于秒杀场景的key理论上在活动结束后,如果list内数据还在,则需要删除,用户任务队列的key理论上必须存在消费者,基本无需处理

4)、数据库使用,主要使用hash和set满足数据库使用场景,如存储用户信息的hash,用户排行榜数据的sortedset。这部分数据需要有同步程序,理应redis的数据和mysql或者oracle数据库中都存有一份,在数据不同步时,能进行同步恢复操作。

5)、发布订阅消息中间件使用,暂未使用。

6)、分布式session使用,尽量与业务Redis不在同一实例上,减少相关性。

7)、分布式锁,用于减少数据库的锁性能消耗,通过Redis的setnx操作实现分布式锁。

三:目前Redis使用存在的一些问题

1)、用于Cache的key没有设置超时时间

2)、用于限流中间件使用的的key未做好退出处理

3)、数据库使用的key,同步还是有缺失,导致数据出错后,无法正常使用

4)、session和业务使用同一实例,依赖性较强

5)、在操作Redis时,同一请求处理中多次操作Redis,但未使用管道合并请求

6)、只使用Redis,未将数据落地至关系型数据库,或者没有足够的日志导致在导出数据,查找数据时太烦

7)、key太多,没有统一的地方查询每个key的使用原因,场景

8)、因为不敢删除,导致内存占用越来越大,导致在持久化是超出正常内存使用

四:使用规范

根据存在的问题及使用建议,需要做如下的规范:

1)、严格控制KEY的长度,但需要注意的是KEY格式需要满足前缀+名称+(期限)等组成,前缀包括项目名称简写如zj,hb,js,sh,活动功能区分hd或者gn,名称建议与Controller名称一致,如果可以需要加期限,如1709表示17年9月过后可以删除。

2)、严格或者是必须设置ttl,需重新封装Redis操作类,封装的类中其中所有的set方法尽可能加上expire,禁止直接使用内置client库

3)、禁止使用hgetall,smembers,keys,lrange 0,-1等获取所有数据的操作,特别是严禁在生产环境使用,如需获取全量数据,需要通过scan,hscan等操作替代

4)、在同一线程或进程多次操作Redis时,需要使用管道的方式获取数据,或者mget,hmget等获取数据,但不建议在集群环境中使用。不可以在同一方法内SET10000次,GET10000次

5)、严禁将数据只保存在Redis中,对一些核心数据必须落地至数据库,一些非核心数据必须落地至日志

6)、Redis只是一个其中的工具,适用场景也是有限的,没必要拿到一个工具往死里用,在技术选型时,不要拘泥于只有Redis

7)、控制每一个value的大小,不要把大量数据合在一个key中,只保存有效的,可使用的,这种场景建议hash或其他方式,或对value进行压缩后储存

8)、建议将保存用户信息和保存业务数据及保存session数据分离使用不同实例,减少因Redis单线程读写高并发情况使用效果不佳

9)、根据目前的实际情况,提出搭建Redis KEY使用管理平台,具体内容见五

五:Redis key管理平台

目标:

初级-》所有Redis key可管理,可查询,可知道key用途

进阶-》可导出(导出方式分为csv,数据库等),删除,批量操作

实现内容:

1、按照需求详细记录每个key的使用,包括key名称,数据结构,生成规则,ttl时间,数据格式示例

2、记录时需评估合理性,在添加时需要注明key使用者,如果是list,还应注明消费者相关

3、定期导出所有key跟管理平台所维护的 key进行对比,看是否有异常key使用情况

4、记录不在管理平台中的key使用相关信息

5、做好定期检查工作,对不正常的key,进行分析

相关文章

  • 使用Redis,你必须知道的21个注意要点

    前言 最近在学习Redis相关知识,看了阿里的redis开发规范,以及Redis开发与运维这本书。分使用规范、有坑...

  • Redis使用规范

    1. key命名约定 1.1 key = 产线名:服务名:用途:数据类型:key。Eg:pub:user:cach...

  • Redis使用规范

  • Redis使用规范

    # ****Redis使用规范**** 一:书写本规范的背景,目的,原因,意义等虚化的内容全部省略。制定本规范只是...

  • Redis使用规范

    一:Redis 概述 - Redis 是内存级别的数据库,在一台普通电脑上,Redis 3.X 便可以读取 10 ...

  • Redis使用规范

    常见问题及建议 连接泄露 有些客户端应用没有使用连接池,redis连接用完后没有及时释放,导致服务侧的存活连接越来...

  • 3.2-redis6可视化客户端安装使用实战+key命名规范—小

    redis6可视化客户端安装使用实战+key命名规范 简介:redis6可视化客户端安装使用实战+key命名规范 ...

  • 【redis】redis好文

    Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis http://kaito-kidd.com/...

  • Redis使用建议规范

    合理选择Redis部署模式 查看推荐配置 冷热数据分离,不要将所有数据全部都放到Redis中 建议根据业务只将高频...

  • redis使用规范建议

    key命名规范 把业务名作为前缀, 然后用冒号分隔,再加上具体的业务数据名比如,存储页面1991的uv。key设计...

网友评论

      本文标题:Redis使用规范

      本文链接:https://www.haomeiwen.com/subject/cvpdvxtx.html