当前位置: 首页 > news >正文

不会写程序如何做网站天津网站优化步骤

不会写程序如何做网站,天津网站优化步骤,做网店的进货网站,网页设计实训报告总结与收获目录标题 Key命名设计#xff1a;可读性、可管理性、简介性Value设计#xff1a;拒绝大key控制Key的生命周期#xff1a;设定过期时间时间复杂度为O(n)的命令需要注意N的数量禁用命令#xff1a;KEYS、FLUSHDB、FLUSHALL等不推荐使用事务删除大key设置合理的内存淘汰策略使… 目录标题 Key命名设计可读性、可管理性、简介性Value设计拒绝大key控制Key的生命周期设定过期时间时间复杂度为O(n)的命令需要注意N的数量禁用命令KEYS、FLUSHDB、FLUSHALL等不推荐使用事务删除大key设置合理的内存淘汰策略使用批量操作提升操作效率 Key命名设计可读性、可管理性、简介性 规范建议使用冒号即:进行分割拼接因为很多Redis客户端是根据冒号分类的。比如有几个Keyapps:app:1、apps:app:2和apps:app:3。Redis Desktop Manager能自动归类到apps目录下。如下图所示 Value设计拒绝大key 规范建议String类型的Value控制在10KB范围以内。这是因为Redis随着Value不断增长在超过10KB后有一个非常奇妙的性能拐点如下图所示 假设内网带宽是千兆网卡即1000MB。假设你的Redis中有一个大Key的Value长度是10KB并且这个Key的QPS是10W那么这一个Key就会把带宽打满10KB*1000001000MB。 控制Key的生命周期设定过期时间 尽可能对每一个Key都设置过期时间这个是非常有益处的。否则你想象一下半年以后一年以后你的Redis集群中有上百G甚至更多的数据谁都不知道这些数据哪些是有价值的哪些已经成为垃圾。如果你的每个Key都设置了过期时间那么就不会出现这个问题了。集群在运行过程中或自动淘汰那些已经不再使用的垃圾缓存数据。 时间复杂度为O(n)的命令需要注意N的数量 这个建议的意思是以List类型为例LINDEX、LREM等命令的时间复杂度就是O(n)。也就是说随着List中元素数量越来越多这些命令的性能越来越差。而Redis又是单线程的如果出现一个慢命令会导致在这个命令之后执行的命令耗时也会增长这是使用Redis的大忌。 事实上这也是JDK8为什么要对HashMap进行链条冲突优化当entry数量不少于64时如果冲突链表长度达到8就会将其转成红黑树。因为链表长度越长性能会越来越差。 禁用命令KEYS、FLUSHDB、FLUSHALL等 这些命令应该在搭建Redis环境的时候就要禁用掉在config配置文件中通过rename-command禁用。FLUSHDB和FLUSHALL这两个命令会清空数据后果可想而知。 至于KEYS命令还记得那个由于使用这个命令导致几百万损失的案例嘛而且这个命令的不当使用导致的损失会随着你的业务并发越大价值越大而导致损失越大 不推荐使用事务 如果你有使用关系式数据库的经验那么“Redis在事务失败时不进行回滚而是继续执行余下的命令”这种做法可能会让你觉得有点奇怪。以下是官方给出的Redis不支持这种做法的优点 Redis命令只会因为错误的语法而失败或是命令用在了错误类型的键上面这也就是说从实用性的角度来说失败的命令是由编程错误造成的而这些错误应该在开发的过程中被发现而不应该出现在生产环境中。因为不需要对回滚进行支持所以 Redis 的内部可以保持简单且快速。 删除大key 如果Redis中有大key那么删除可能会产生毛刺。当然如果你的Redis是4.0以上并使用UNLINK命令删除key那么不会有什么问题。那Redis4.0以下该怎么删除大key呢 如果是hash结构那么先利用scan命令遍历得到一批field然后利用hdel命令进行删除 如果是list结构那么先利用llen得到list中元素总个数然后利用ltrim命令批量删除 如果是set结构那么先利用sscan命令遍历得到一批key然后利用srem命令批量删除 如果是sorted set结构那么先利用zscan命令遍历得到一批key然后利用zrem命令批量删除如果是string结构呢没有什么很好的办法 设置合理的内存淘汰策略 Redis的内存剔除策略maxmemory-policy有volatile-lru、volatile-random、volatile-ttl、allkeys-lru、allkeys-random、noeviction。命名以volatile开头的3个策略主要作用于带有失效时间属性的key命名以allkeys开头的2个策略作用于所有key最后一个策略noeviction不会剔除任何数据只是当内存使用满了以后拒绝所有写入操作并返回客户端错误信息(error) OOM command not allowed when used memory此时Redis只响应读操作。 事实上每种方案都有一定的局限性所以我们除了根据自己的业务选择合适的剔除策略以后还需要对Redis使用的内存进行监控主要监控info中info Memory段的used_memory_peak即Redis使用内存峰值建议设置其告警阈值为maxmemory的90%。 使用批量操作提升操作效率 批量命令主要分为两类原生命令和非原生命令 原生命令包括例如mget、mset、hmget、hmset、LPUSH key value集合等。非原生命令包括Pipeline。 合理使用这些命令对操作性能提升是极其巨大的尤其在单机Redis或者Sentinel模式下。因为这两种架构不涉及跨SlotRedis集群性能也有提升但是使用会受到一些限制例如不支持跨Slot的操作等官方并不太建议在Rdis集群环境下使用Pileline和multi key操作。 当然批量虽好但不要贪多。俗话说的好贪多嚼不烂。一般不要超过1000具体限制还与操作数据大小有关。
http://www.hkea.cn/news/14326020/

相关文章:

  • 科技广告公司网站建设做维修注册网站
  • 网站解析记录值做网站大公司还是小公司
  • 建设学校网站的意义百度权重是什么
  • 跨境电商在哪些网站上面做WordPress智能友链审核
  • 傻瓜式大型网站开发工具图书馆建设投稿网站
  • 企业网站开发实训目的大型网站维护费一年多少
  • h5打开小程序上海优化关键词的公司
  • 滨州网站建设制作系统山东省城建设计院网站
  • 兰州网站建设多少钱网站制作哪些类型
  • 网站开发导向图黄冈网站建设推荐
  • 网站留言自动短信提醒wordpress手机登录代码
  • 西安门户网站管理系统官方网站
  • 企业网站下周长沙网站建设公司
  • 资源网站搭建销售网站内容设计
  • 防城港网站设计公司.tel域名不可以做网站域名吗
  • 白银市城乡建设局网站庞馨妩wordpress批量添加分类
  • 网站 维护 费用贵州省两学一做网站
  • 网站开发容易吗无锡滨湖区建设局网站
  • 个人网站转企业山西省建设工程网站
  • 公司做网站需要准备什么条件常州百度推广优化
  • 做网站官网好处工程建设分为哪几个阶段
  • 郑州网站怎么推广中铁建设登录入口
  • 百度网站域名百度下载文章转wordpress
  • 网站主题分析男女直接做那个的视频网站
  • 中山东莞网站推广网站网站模板
  • 飞言情做最好的小说网站网站开发会遇到的问题
  • 江西省城乡和住房建设厅网站市场营销案例100例及答案
  • 云主机怎么安装网站跟做网站的人谈什么
  • 做姓氏图的网站小软件下载网站
  • 室内装饰设计效果图网站seo基础