后端开发-关于缓存的理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014142379/article/details/52125736

前言

今天发现了一个很好的学习IT知识的网站(也有APP),名字叫掘金,我预测这个APP应该会火,里面收集了大量的好的IT技术博 客,含金量都比较高,也给大家推荐一下,有 兴趣的同学可以去网站看看,真的不错哟

介绍

好了言归正传了,今天在一个blog中看到了关于后端开发缓存的介绍觉得讲的还不错,自己就想着也写一篇,记录下自己的心 得。 首先得要知道什么是缓存,缓存其实就是一 个临时存储数据的地方。做后台开发性能最重要了,如果用户每次访问一个页 面花 个几秒钟,那不是要炸?随后缓存也就应运而生,缓存的出现极大的改善了产品的性能,使 得用户的访问效率更高了。

缓存的类型

  • 数据库型缓存数据库型缓存就是将数据存储在非关系型数据库中,非关系型数据库中用key-value的形式存储数据,这样就可以大大加快访问效率。

  • 文件型缓存数据库型缓存要远程访问数据库速度还是慢了点,文件型数据库就是将数据临时存放到本地文件,访问本地文件速度比远程数据库肯定要快,所以这个文件就是一个缓存。

  • 内存型缓存在进一步,访问文件还是有点慢,那么我们可以把一些热数据直接放到内存中,这样访问内存的速度比文件又更快了。

那么如何设计一个缓存呢?

  • 底层数据结构在计算机中几乎所有的轮子都要考虑数据结构,而且底层数据结构设计的好坏直接影响系统运行的效率。对于缓存来说,一般都是key-value的形式,所以底层一般用树或者哈希表来存储数据,缓存对性能的要求比较高,所以一般使用哈希表来保存数据。

  • 内存管理因为有写操作,所以需要申请内存,如果写的操作比较多的话再加上一些读的操作,那么就会不停的申请释放资源,这时就会影响性能,所以一般会使用内存连接池来使用。

  • 网络模型对于网络模型,实际上现代的高级语言已经基本上封装到http这个层次了,比如golang这种现代语言,http的包都可以直接用,并且并发性能也挺好的,但是对于一个缓存系统,如果配合一个http的模型,就显得太重了,http底下的TCP模型就可以很好的解决问题,对于这一块,我们可以用个简单的模型:根据CPU的核心数启动相应数量的协程,每个协程配合一个channel,启动一个协程负责接收tcp连接,accpet链接以后通过channel交给相应的协程处理。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页