IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

什么叫命中率?正常来讲,命中率应该控制在多少?

关联任务:

任务五

直播时间:

2019-08-24 15:30:00


课堂内容:

视频链接:

PPT链接:

提交按钮:

小课堂内容格式


标题:

【修真院xx(职业)小课堂】课题名称

开场语:

大家好,我是IT修真院XX分院第X期的学员XX,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网XX(职业)任务X,深度思考中的知识点——XXX

(1)背景介绍:

背景介绍的时候,尽可能的要宽广,讲清楚来龙去脉,讲清楚为什么会需要这个技术。

(2)知识剖析:

讲知识点的时候,尽可能的成体系,学会成体系的去给别人介绍知识。现在很多做的都是零散的,没有分类。

(3)常见问题:

最少列出1个常见问题。

(4)解决方案:

写清楚常见问题的解决方案。

(5)编码实战:

尽可能的去寻找在真实项目中在用的。如果你能找到某个网站在用你说的知识点,这是最好的。学以致用,否则当成练习题就没有意义了。多准备一些demo,讲解过程中将知识点和demo结合,便于大家理解所讲解的知识点。

(6)拓展思考:

知识点之外的拓展思考,由分享人进行讲解,这些东西就是所谓的深度,也是一个人技术水准高低比较的表现。

(7)参考文献:

引入参加文献的时候,在引用的句子后面加上序号【1】。参考文献中列出详细来源。不要去抄别人的东西,这是一个基本的态度。

(8)更多讨论:

Q1:提问人:问题?
A1:回答人(可以是分享人,也可以是其他学员):回答
Q2:提问人:问题?
A2:回答人(可以是分享人,也可以是其他学员):回答
Q3:提问人:问题?
A3:回答人(可以是分享人,也可以是其他学员):回答

(9)鸣谢:

感谢XX、XX师兄,此教程是在他们之前技术分享的基础上完善而成。

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

什么叫命中率?正常来讲,命中率应该控制在多少?     中品

辅导师兄 [散修弟子]JAVA-7190


【修真院java课堂】什么叫命中率?正常来讲,命中率应该控制在多少?

开场语:

大家好,我是IT修真院深圳分院第16期的学员刁宏扬,一枚正直纯洁善良的java程序员,今天给大家分享一下,修真院官网java(职业)任务6,深度思考中的知识点——什么叫命中率?正常来讲,命中率应该控制在多少?

(1)背景介绍:

        缓存命中率

        

        命中:可以直接通过缓存获取到需要的数据。

       不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。

            通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。

            影响缓存命中率的几个因素

            缓存适合“读多写少”的业务场景,反之,使用缓存的意义其实并不大,命中率会很低。

                业务需求决定了对时效性的要求,直接影响到缓存的过期时间和更新策略。时效性要求越低,就越适合缓存。在相同key和相同请求数的情况下,缓存时间越长,命中率会越高。

                影响缓存命中率的几个因素

                1、缓存的设计(粒度和策略)

                通常情况下,缓存的粒度越小,命中率会越高。

                当数据发生变化时,直接更新缓存的效率比删除缓存(或让缓存过期)的命中率更高。

                时效性,访问频率。

            缓存读取简图       

                影响缓存命中率的几个因素

                2、缓存容量和基础设施:

                影响因素,缓存的大小,缓存的技术选型(内置本地缓存,分布式缓存),缓存框架的选择


                如何监控缓存的命中率

                在memcached中,运行state命令可以查看memcached服务的状态信息,其中cmd_get表示总的get次数,get_hits表示get的总命中次数,命中率 = get_hits/cmd_get。

                redis中可以运行info命令查看redis服务的状态信息,其中keyspace_hits为总的命中中次数,keyspace_misses为总的miss次数,命中率=keyspace_hits/(keyspace_hits+keyspace_misses)。


            不需要写入缓存的情况

            1、业务数据不常用(相对的),会导致命中率低,就没有必要写入缓存

            2、如果写操作多,频繁需要写入数据库,也没有必要使用缓存;

            3、数据量大,储存过大文件会给缓存带来很大压力。


            memcached特点

                1.实现分布式缓存(支持热部署),通过hashcode根据缓存服务器ip智能分配将数据缓存到的服务器上。

                2.实现最近最少访问的数据优先被移除缓存。

                3.快速找到适配的存储空间,避免内存的浪费。

                4.使用键值对存储数据,方便读取修改等缓存的管理。

                5.socket通信,缓存服务器和应用服务器分离。


                memcached内部机制

                储存:内存(照预先规定的大小, 将分配的内存分割成各种尺寸的块(chunk),

                并把尺寸相同的块分成组。

                各个尺寸的chunk大小是通过其增长因子(growth  factor)来决定的,

                默认增长因子为1.25。下一个尺寸的chunk大小=之前一个chunk大小*增长因子。)

                Memcached的设计哲学

                1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;

                2. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;

                3. 各服务器间彼此无视:不在服务器间进行数据同步;

                4. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长;

            Redis 和 Memcached的不同

                Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。

                内存使用效率对比:使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。

                性能对比:由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis。

参考文献:

https://www.cnblogs.com/dinglang/p/6117309.html

https://www.zhihu.com/question/19829601/answers/updated

https://blog.51cto.com/xslwahaha/1627129


更多讨论:

Q1:提问:Mencached的分布式有哪几种。
A1:回答:取模算法,根据服务器台数的玉树进行分散,求得键的整数哈希值,在除以服务器台数,根据余数来选择服务器。

一致性算法,把服务器的各个节点放到中部的各个时刻上,同时也要使用另一种分布式算法,即一致性hash算法,就是把服务器各个节点放到钟表的各个时刻上,同时也要储存的key页映射到钟表的某个时刻上,该key沿钟表顺时针走,碰到第一个比他小的节点之后key就落在这台服务器上。
Q2:提问:命中率的大小一般控制到多少
A2:回答:安装cpu的标准(1+80%)*(1+80%)以上吧。
Q3:提问人:缓存介质有哪些
A3:回答:内存,硬盘,数据库

(10)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~


评论

[深圳|结业弟子]JAVA-廖志鹏 发表于 2019-10-28 21:56:29 #1

这个概念没这么接触过,不是很懂其应用场景

回复

请您登录 后进行评论