加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

一份完整的阿里云Redis开发规范,值得收藏!

发布时间:2019-04-15 20:21:41 所属栏目:编程 来源:付磊-起扬
导读:本文首要先容在行使阿里云Redis的开拓类型,从下面几个方面举办声名。 键值计划 呼吁行使 客户端行使 相干器材 通过本文的先容可以镌汰行使Redis进程带来的题目。 一、键值计划 1、key名计划 可读性和可打点性 以营业名(或数据库名)为前缀(防备key斗嘴),
副问题[/!--empirenews.page--]

  一份完备的阿里云Redis开拓类型,值得保藏!

本文首要先容在行使阿里云Redis的开拓类型,从下面几个方面举办声名。

  •  键值计划
  •  呼吁行使
  •  客户端行使
  •  相干器材

通过本文的先容可以镌汰行使Redis进程带来的题目。

一、键值计划

1、key名计划

可读性和可打点性

以营业名(或数据库名)为前缀(防备key斗嘴),用冒号脱离,好比营业名:表名:id

  1. ugc:video:1 

简捷性

担保语义的条件下,节制key的长度,当key较多时,内存占用也不容忽视,譬喻: 

  1. user:{uid}:friends:messages:{mid}简化为u:{uid}:fr:m:{mid}。 

不要包括非凡字符

反例:包括空格、换行、单双引号以及其他转义字符

2、value计划

拒绝bigkey

防备网卡流量、慢查询,string范例节制在10KB以内,hash、list、set、zset元素个数不要高出5000。

反例:一个包括200万个元素的list。

非字符串的bigkey,不要行使del删除,行使hscan、sscan、zscan方法渐进式删除,同时要留意防备bigkey逾期时刻自动删除题目(譬喻一个200万的zset配置1小时逾期,会触发del操纵,造成阻塞,并且该操纵不会不呈此刻慢查询中(latency可查)),查找要领和删除要领

选择得当的数据范例

譬喻:实体范例(要公道节制和行使数据布局内存编码优化设置,譬喻ziplist,但也要留意节减内存和机能之间的均衡)。

反例: 

  1. set user:1:name tom  
  2.    set user:1:age 19  
  3.    set user:1:favor football 

正例:

  1. hmset user:1 name tom age 19 favor football 

节制key的生命周期

redis不是垃圾桶,提议行使expire配置逾期时刻(前提应承可以打散逾期时刻,防备齐集逾期),不外期的数据重点存眷idletime。

二、呼吁行使

1、O(N)呼吁存眷N的数目

譬喻hgetall、lrange、smembers、zrange、sinter等并非不能行使,可是必要明晰N的值。有遍历的需求可以行使hscan、sscan、zscan取代。

2、禁用呼吁

榨取线上行使keys、flushall、flushdb等,通过redis的rename机制禁掉呼吁,可能行使scan的方法渐进式处理赏罚。

3、公道行使select

redis的大都据库较弱,行使数字举办区分,许多客户端支持较差,同时多营业用大都据库现实照旧单线程处理赏罚,会有滋扰。

4、行使批量操纵进步服从

  1.  原生呼吁:譬喻mget、mset。
  2.  非原生呼吁:可以行使pipeline进步服从。

但要留意节制一次批量操纵的元素个数(譬喻500以内,现实也和元素字节数有关)。

留意两者差异:

  1.  原生是原子操纵,pipeline长短原子操纵。
  2.  pipeline可以打包差异的呼吁,原生做不到
  3.  pipeline必要客户端和处事端同时支持。

5、不提议过多行使Redis事宜成果

Redis的事宜成果较弱(不支持回滚),并且集群版本(自研和官方)要求一次事宜操纵的key必需在一个slot上(可以行使hashtag成果办理)。

6、Redis集群版本在行使Lua上有非凡要求

1、全部key都应该由 KEYS 数组来转达,redis.call/pcall 内里挪用的redis呼吁,key的位置,必需是KEYS array, 不然直接返回error,"-ERR bad lua script for redis cluster, all the keys that the script uses should be passed using the KEYS arrayrn"

2、全部key,必需在1个slot上,不然直接返回error, "-ERR eval/evalsha command keys must in same slotrn"

7、monitor呼吁

须要环境下行使monitor呼吁时,要留意不要长时刻行使。

三、客户端行使

1、停止多个应用行使一个Redis实例

不干系的营业拆分,民众数据做处事化。

2、行使毗连池

可以有用节制毗连,同时进步服从,尺度行使方法:

  1. Jedis jedis = null;  
  2. try {  
  3.     jedis = jedisPool.getResource();  
  4.     //详细的呼吁  
  5.     jedis.executeCommand()  
  6. } catch (Exception e) {  
  7.     logger.error("op key {} error: " + e.getMessage(), key, e);  
  8. } finally {  
  9.     //留意这里不是封锁毗连,在JedisPool模式下,Jedis会被偿还给资源池。  
  10.     if (jedis != null)   
  11.         jedis.close();  

3、熔断成果

高并发下提议客户端添加熔断成果(譬喻netflix hystrix)

4、公道的加密

配置公道的暗码,若有须要可以行使SSL加密会见(阿里云Redis支持)

5、裁减计策

按照自身营业范例,选好maxmemory-policy(最大内存裁减计策),配置好逾期时刻。

默认计策是volatile-lru,即高出最大内存后,在逾期键中行使lru算法举办key的剔除,担保不外期数据不被删除,可是也许会呈现OOM题目。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读