5、不建议过多使用Redis事务功能 Redis的事务功能较弱(不支持回滚),而且集群版本(自研和官方)要求一次事务操作的key必须在一个slot上(可以使用hashtag功能解决) 6、Redis集群版本在使用...Lua上有特殊要求 1、所有key都应该由 KEYS 数组来传递,redis.call/pcall 里面调用的redis命令,key的位置,必须是KEYS array, 否则直接返回error,"-ERR...四、相关工具 1、数据同步 redis间数据同步可以使用:redis-port 2、big key搜索 redis大key搜索工具 3、热点key寻找 内部实现使用monitor,所以建议短时间使用facebook...的redis-faina 阿里云Redis已经在内核层面解决热点key问题 五、删除bigkey 下面操作可以使用pipeline加速。...redis 4.0已经支持key的异步删除,欢迎使用。
使用规范 1、冷热数据分离,不要将所有数据全部都放到Redis中 虽然Redis 支持持久化,但是Redis的数据存储全部都是在内存中,成本昂贵。...2、不同的业务数据要分开存储 不相关的业务数据不要集中放到一个Redis实例中,建议新业务申请新的单独实例。...3、键值设计 规范Key的格式,合适的key,便于查看,统计,排错。...4、控制key的生命周期,redis不是垃圾桶 如果将redis定位为缓存Cache使用,对于存放的key一定要设置超时时间!...3、严禁作为消息队列使用 没有非常特殊诉求,严禁将redis当作消息队列使用。redis当消息队列使用,会有容量、网络、效率、功能方面的多种问题。
1.冷热数据分离,不要将所有数据全部都放到Redis中 虽然Redis支持持久化,但是Redis的数据存储全部都是在内存中的,成本昂贵。...2.不同的业务数据要分开存储 不要将不相关的业务数据都放到一个Redis实例中,建议新业务申请新的单独实例。...因为Redis为单线程处理,独立存储会减少不同业务相互操作的影响,提高请求响应速度;同时也避免单个实例内存数据量膨胀过大,在出现异常情况时可以更快恢复服务!...3.规范Key的格式 合适的key,便于查看,统计,排错。...禁止使用Keys正则匹配操作 Redis是单线程处理,在线上KEY数量较多时,操作效率极低【时间复杂度为O(N)】,该命令一旦执行会严重阻塞线上其它命令的正常请求,而且在高QPS情况下会直接造成Redis
摘要:参考官方文档Redis Cluster spec总结的Redis规范 正文: Redis 集群规范 安全写入 两个写入丢失的可能 写入操作到达主节点,主节点异步冗余备份还没传播到从节点时候主节点挂了...性能 在Redis的集群中,节点并不是把命令转发到负责键的节点上,而是把客户端重定向到服务一定范围内的键的节点上。...由于使用了异步复制,节点不会等待其他节点对写入操作的回复 所以普通操作是可以被处理得跟在Redis单机版一样的,在一个拥有 N 个master节点的 Redis 集群中,由于线性扩展的设计,你可以认为同样的操作在集群上的性能是...Redis单机版的n倍 键分布模型 Redis 集群的键空间被分割为 16384 个槽(slot), 集群的最大节点数量也是 16384 个。...参考链接 Redis Cluster Spec Redis 集群规范
来源:阿飞的博客 jianshu.com/p/932b69c8aa2f Key命名设计:可读性、可管理性、简介性 规范建议使用冒号即:进行分割拼接,因为很多Redis客户端是根据冒号分类的,如下图所示...Value设计:拒绝大容量key 规范建议String类型的Value控制在10KB以内,这是因为Redis随着Value不断增长,在超过10KB后,会产生一个非常奇妙的性能拐点。...这是个鲜血淋漓的列子,我们一定会要事先做好代码规范,提前避免。...127.0.0.1:55357] "set" "name" "afei" 1573915217.938838 [0 127.0.0.1:55357] "set" "公 众 号" "阿飞的博客" 之所以规范建议控制...而且,这种影响会由于Redis并发越高,而更加放大。关于这个问题,美团有一个很经典的案例,感兴趣的同学可以搜索关键词:“美团在REDIS上踩过的一些坑-3.REDIS内存占用飙升 ”。
建议统一异常处理,不仅要在日志中打印异常堆栈信息,还得给前端统一格式的响应信息,而不是前端页面直接提示给用户500
说到代码规范,我们就不得不提阿里云的 Redis 开发规范。这个规范写的很好,想把我说的都总结了。需要这套规范的可以私信我,我发给你们。 其中有一条写到: ?...意思我们都懂,关键是这个 bigkey 不好掌握,使用着使用着 key 可能就变大了,不规范了。 那么有没有大 Key 检测机制呢?答案当然有。...下面我们就一起来看看如果提前发现 Redis 中使用不合理的大 Key。 redis-cli -h{ip} -p{port} bigkeys 命令就是干这个事情的。...该命令会对 redis 中的 key 进行采样,寻找较大的 keys。是用的是 scan 方式,不用担心会阻塞 redis 很长时间不能处理其他的请求。...bigkey 通常会导致内存空间不平衡,超时阻塞,如果 key 较大,redis 又是单线程,操作 bigkey 比较耗时,那么阻塞 redis 的可能性增大。
Redis客户端使用名为RESP(Redis序列化协议)的协议与Redis服务器进行通信。 虽然该协议是专为Redis设计的,但它可以用于其他CS软件项目的通讯协议。 <!...请求将要执行的命令作为字符串数组从Redis客户端发送到Redis服务器。Redis使用特定数据类型的命令进行回复。...Redis Cluster使用不同的二进制协议,以便在节点之间交换消息。 网络层 客户端连接到Redis服务器,是创建TCP连接到端口6379。...排除上述两个例外,Redis协议是一个简单的请求 - 响应协议。 RESP 协议描述 RESP协议在Redis 1.2中引入,但它成为与Redis 2.0中的Redis服务器通信的标准方式。...发送命令到 Redis 服务端 既然熟悉RESP序列化格式,那么编写Redis客户端库的实现将很容易。
首发博客地址[1] 系列文章地址[2] ---- 引自《阿里规约》的开头片段: 现代软件架构的复杂性需要协同开发完成,如何高效地协同呢?...2)很多前端开发人员写选择器链的时候不使用 直接子选择器(注:直接子选择器和后代选择器的区别)。有时,这可能会导致疼痛的设计问题并且有时候可能会很耗性能。然而,在任何情况下,这是一个非常不好的做法。...(一) Vue 编码基础 vue 项目规范以 Vue 官方规范(https://cn.vuejs.org/v2/style-guide/)[3] 中的 A 规范为基础,在其上面进行项目开发,故所有代码均遵守该规范...命名规范采用KebabCase命名规范且与 component 组件名保持一致!...首发博客地址: https://blog.zysicyj.top/ [2] 系列文章地址: https://blog.zysicyj.top/categories/技术文章/后端技术/系列文章/开发规范
Redis客户端使用名为RESP(Redis序列化协议)的协议与Redis服务器进行通信。 虽然该协议是专为Redis设计的,但它可以用于其他CS软件项目的通讯协议。...请求将要执行的命令作为字符串数组从Redis客户端发送到Redis服务器。Redis使用特定数据类型的命令进行回复。...排除上述两个例外,Redis协议是一个简单的请求 - 响应协议。 RESP 协议描述 RESP协议在Redis 1.2中引入,但它成为与Redis 2.0中的Redis服务器通信的标准方式。...虽然Redis协议易于实现,但在交互式会话中使用并不理想,并且redis-cli可能并不总是可用。 出于这个原因,Redis 设计了一种特殊的接受命令的方式,并称为内联命令格式。...由于在协议请求中没有命令以 * 开头,Redis可以检测这种情况并处理命令。 高效解析Redis协议 尽管 Redis 协议非常易读且易于实现,但它却可以拥有二进制协议高效性能。
七、注释规约 【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用/*内容/ 格式,不得使用 // xxx 方式。
, 比如ad_left01.gif || btn_submit.gif; 在保证视觉效果的情况下选择最小的图片格式与图片质量, 以减少加载时间; 尽量避免使用半透明的png图片(若使用, 请参考css规范相关说明...760X100,750X120,468X60,468X95,728X90,585X140 次级页的pip尺寸360X300,336X280 游标:100X100或120X120 LOGO的国际标准规范
该规范主要参考《谷歌的代码评审指南》 ?...一、开发者 不应该在 CI 内同时包含主要风格的改动与其他代码的修改,这样会导致难以看出 CI 到底做出什么改动 格式化 commit message 优势: 提供更多的历史信息,方便快速浏览; 可以过滤某些...commit 的详细描述,可以分成多行 footer 部分只用于两种情况:1、不兼容变动;2、关闭issue 扩展:如果你使用 IDEA 进行编码,可以是使用 git commit template 插件来规范每次提交的...未来其他开发者接手时,代码是否易于理解与易用? 测试:代码是否经过正确且设计良好的自动化测试 命名:开发人员是否为变量、类、方法等选择了明确的名称? 注释:注释是否清晰有效?...风格:代码是否遵循了代码开发规范 文档:开发人员是否也同步更新了相关文档 在评论前加上“nit:”这样的前缀,表明这是一个优化性的建议,可以不影响本次上线 应在一个工作日内完成评审,并给出意见 评价只针对代码和具体业务流程
编写目的 本文描述了 JAVA 开发中的有关包、类、接口、方法、实例变量、变量和常量的命名规范,用于规范 JAVA 编程过程中的命名和代码书写规范。 1. ...程序代码作为重要的核心内容,有必要遵循统一的书写和编码规范; 2. 在程序设计总体方向上,有必要遵循统一的规范要求进行设计; 3. 遵循规范的要求,能够有效的减少编码过程中的错误; 4. ...为了有效的提高程序的可维护性,编码方式需要遵循统一的规范。 适用范围 适用于开发组基于 JAVA 开发的项目。...【推荐】在设计评审阶段,开发人员需要和测试人员一起确定单元测试范围,单元测试最好覆盖所有测试用例(UC)。 14. ...本文是开发手册,凡是本文内容都是与开发同学强相关的。 l 单元测试代码是多余的。汽车的整体功能与各单元部件的测试正常与否是强相关的。 l 单元测试代码不需要维护。
会响应对应路由转发过来的 get 请求 func (c *Controller) Get() { ... } 大写字母开头的方法以为着是可供调用的公共方法,如果你的方法想只在本包内掉用,请以小写字母开发
,每一个使用redis的开发人员都应当掌握规范的开发和使用方法。...开发人员使用redis存储每天参加活动的用户,通过ZRANGEBYSCORE命令获取目标用户进行提醒,提醒完后使用ZREMRANGEBYSCORE命令从redis中清除这批用户。...开发人员使用redis的同一个sortedset存储这些导入的数据,每天定时任务执行计算任务。由于没有清理,导致大量结束计算任务的废弃数据残留redis。...分析 下面是开发人员的三种操作redis方案的伪代码 方案1:直接使用redis的HSET逐个设置 for(50000;) HSET(key,短码,手机号) 结果:失败。...总 结 本文整理出的几点redis开发规范主要是涉及redis客户端的使用部分,每个开发人员在使用redis开发过程中几乎都会涉及到上述提到的几个问题,需要多多留心,提高代码质量,提升redis
那阅读起来就是苦不堪言,所以,一些基本的开发规范是必须的,是为了自己方便阅读代码,也方便他人阅读修改代码。...文档规范 HTML5的文档类型声明:<!...修改其它的内建对象比如 Function.prototype,虽危害没那么大,但始终还是会导致在开发过程中难以 debug 的问题,应当也要避免。...'valid' : 'invalid' ---- JSHint 在js规范中,有很多规范都是样式上的规范而不是逻辑上的规范,比如尽量使用=== 而不是==,我们可以使用JSHint或者JSLint,Javascript...---- 使用子选择器 很多前端开发人员写选择器链的时候不使用 直接子选择器(注:直接子选择器和后代选择器的区别)。 有时,这可能会导致疼痛的设计问题并且有时候可能会很耗性能。
使用不带BOM的UTF-8编码 在HTML中指定编码<meta charset="utf-8">; 无需使用@charset指定样式表编码,它默认为UTF-...
领取专属 10元无门槛券
手把手带您无忧上云