千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:广州千锋IT培训  >  技术干货  >  memcached、Redis缓存的数据都是key-value的形式,那缓存时,具体是key、value分别是怎样的数据呢?

memcached、Redis缓存的数据都是key-value的形式,那缓存时,具体是key、value分别是怎样的数据呢?

来源:千锋教育
发布人:xqq
时间: 2023-10-16 07:51:37

一、缓存时,具体是key、value分别是怎样的数据

首先Memcache是一个基于内存的key/value分布式缓存系统,不过memcache还可用于缓存其他东西,例如图片、视频等等。Redis是一个开源的基于内存亦可持久化的日志型、Key-Value的数据库。

Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。

大部分缓存实现时都是基于key/value形式,主要是缓存的使用场景决定的。另外,Redis是一种NoSQL数据库,使用场景也不仅仅限于缓存。

Memcached通过使用key-value形式存储和访问数据,在内存中维护一张巨大的HashTable,使得对数据查询的时间复杂度降低到O(1),保证了对数据的高性能访问。

memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe传递给worker线程,进行读写IO,网络层使用libevent封装的事件库,多线程模型可以发挥多核作用,但是引入了cache coherency和锁的问题,比如:memcached最常用的stats命令,实际memcached所有操作都要对这个全局变量加锁,进行技术等工作,带来了性能损耗。

延伸阅读:

二、Memcached内存管理机制

Memcached默认使用Slab Allocation机制管理内存,其主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块以存储相应长度的key-value数据记录,以完全解决内存碎片问题。Slab Allocation机制只为存储外部数据而设计,也就是说所有的key-value数据都存储在Slab Allocation系统里,而Memcached的其它内存请求则通过普通的malloc/free来申请,因为这些请求的数量和频率决定了它们不会对整个系统的性能造成影响Slab Allocation的原理相当简单。 如图所示,它首先从操作系统申请一大块内存,并将其分割成各种尺寸的块Chunk,并把尺寸相同的块分成组Slab Class。其中,Chunk就是用来存储key-value数据的最小单位。每个Slab Class的大小,可以在Memcached启动的时候通过制定Growth Factor来控制。假定图中Growth Factor的取值为1.25,如果名列前茅组Chunk的大小为88个字节,第二组Chunk的大小就为112个字节,依此类推。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

MySQL的主从切换在什么情况下使用?

2023-10-16

写好的java可执行程序在其他电脑上如何使用?

2023-10-16

数据库中的索引条目(index entry)是什么?

2023-10-16

最新文章NEW

插入数据前必须使用USE选择操作的数据库吗?

2023-10-16

在Flex 4中怎样实现与Oracle数据库的链接?

2023-10-16

memcached、Redis缓存的数据都是key-value的形式,那缓存时,具体是key、value分别是怎样的数据呢?

2023-10-16

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>