首页 > 数据库 >Redis与Memcached有什么区别?

Redis与Memcached有什么区别?

时间:2023-07-15 23:55:29浏览次数:42  
标签:存储 区别 redis Redis 内存 key Memcached

Memcached与Redis有什么区别

Redis和Memcached 都是基于内存的数据存储系统,Memacched是高性能分布式内存缓存服务,其本质傻姑娘就是一个内存key-value数据库。Redis是一个开源的key-value存储系统,与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型,字符串,hash表,链表,集合,有序集合以及基于这些数据类型的相关操作,

  1. 数据操作不同

与Memcached仅支持简单的key-value结构的数据记录不同,redis支持的数据类型更加丰富,Memcached基本只支持简单的kv存储,不支持枚举,不支持持久化和复制等功能。redis支持服务器端的数据操作相比Memcached来说,拥有更多的数据结构和支持丰富的数据操作,支持listst,sorted,hash众多数据结构

  1. 内存管理机制不同

在Redis中,并不是所有数据都一直存储在内存中,这是和Memcached相比一个最大的区别。当物理内存用完时,Rdeis可以将一些很久都没有用到的value交换到磁盘,redis只会缓存所有的key的信息,如过redis发现内存的使用量超过了一个阈值,将触发swap的操作,redis根据公式计算出哪些key对应的value需要swap到磁盘,然后再将这些key对应的value持久化道磁盘,同时在内存中清除。这种特性导致redis可以保持超过本身机器本身内存大小的数据
而Memacched默认使用Slab Allocationg 机制管理内存,主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块用来存储相应长度的kv数据记录,以完全解决内存碎片的问题。
从内存利用率来讲,使用简单的kv存储的话,Memcached的内存利用率更高,而如果使用redis采用hash结构来做kv存储,由于其组合式的压缩,其内存利用率会高于Memcached。

  1. 性能不同

由于redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高,而在100k以的数据中
Memcached性能要高于Redis,虽然Redis也在存储大数据的性能上进行了优化,但是比起Memcached,还是稍有逊色。

  1. 集群管理不同

Memcached是全内存的数据缓冲系统,Redis虽然支持数据的持久化,但是全内存毕竟才是其高性能的本质,作为基于内存的存储系统,

Memcached的分布式存储,相较于Memcached值呢个采用客户端实现分布式存储,Redis更偏向于在服务器端构建分布式存储

小结: Redis和Memcached哪个更好?

Redis更多场景是作为Memcached的代替者来使用,当需要除了kv之外更多数据类型支持或者存储的数据不能被剔除的时候,Redis更加的合适,如果只做缓存的话,Memcached已经足够应对绝大部分的需求。redis 的出现只是提供了一个更好的选择,总的来说

标签:存储,区别,redis,Redis,内存,key,Memcached
From: https://www.cnblogs.com/pf666nb/p/17557262.html

相关文章

  • synchronized和ReentrantLock的区别
    用法:synchronized修饰代码块或者方法,不需要手动释放,默认非公平ReentrantLock需要手动调用,手动释放,能够控制公平机制,能够尝试获取和超时获取锁,能更好的控制锁行为,在需要通过线程提高性能的场景中,能比较好的操控 基本原理:synchronized是靠管程(monitor)实现的,有锁升级,默认从轻量......
  • ++b 和 a++ 的区别 看汇编代码
    汇编代码解释如下intx=a++;00F088338B45F8moveax,dwordptr[a]00F088368945E0movdwordptr[x],eax00F088398B4DF8movecx,dwordptr[a]00F0883C83C101a......
  • 【EF Core】主从实体关系与常见实体关系的区别
    上次老周扯了有关主、从实体的话题,本篇咱们再挖一下,主、从实体之间建立的关系,跟咱们常用的一对一、一对多这些关系之间有什么不同。先看看咱们从学习数据库开始就特熟悉的常用关系——多对多、一对一、一对多说起。数据实体之间会建立什么样的关系,并不是规则性的,而是要看数据的功......
  • 如何使用C#中的Lambda表达式操作Redis Hash结构,简化缓存中对象属性的读写操作
    Redis是一个开源的、高性能的、基于内存的键值数据库,它支持多种数据结构,如字符串、列表、集合、散列、有序集合等。其中,Redis的散列(Hash)结构是一个常用的结构,今天跟大家分享一个我的日常操作,如何使用Redis的散列(Hash)结构来缓存和查询对象的属性值,以及如何用Lambda表达式树来简化......
  • Nacos和Consul的区别
    一、CAP理论在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(PartitionTolerance)三者中的两个,另外一个必须被牺牲。1、CP架构如下图,当node1发生异常时,node1的i的值为1,而因为node1发生了异常,导......
  • vue中$set和$forceUpdate强制更新视图层的区别
    $forceUpdate原理:调用notify() 强制视图更新  $set原理:defineReactive(this.data数据,要劫持得数组索引或对象键,默认值)   建立响应式依赖  指定数据更新使用场景:如果data数据的层级过深,导致无法响应式显示解决方法一:$set()this.$set(target,key,value)解......
  • C语言 #ifdef 和 #if defined区别
    注意两者都有个define的作用,区别在于使用方式上。前者的通常用法是:\#ifdefXXX....\#else....\#endif只能在两者中选择是否有定义。对于后者,常用法是:\#ifdefinedxxx1....\#elifdefinedxxx2....\#elifdefinedxxx3....\#endif......
  • 7.null和undefined的区别
    7.null和undefined的区别?首先Undefined和Null都是基本数据类型,这两个基本数据类型分别都只有一个值,就是undefined和null。undefined代表的含义是未定义,null代表的含义是空对象。一般变量声明了但还没有定义的时候会返回undefined,null主要用于赋值给一些可能会返......
  • 122.get和post请求在缓存方面的区别
    122.get和post请求在缓存方面的区别相关知识点:get请求类似于查找的过程,用户获取数据,可以不用每次都与数据库连接,所以可以使用缓存。post不同,post做的一般是修改和删除的工作,所以必须与数据库交互,所以不能使用缓存。因此get请求适合于请求缓存。回答:缓存一般只适用......
  • 【Azure Redis】Azure Redis添加了内部虚拟网络后,其他区域的主机通过虚拟网络对等互连
    问题描述跨区域无法访问AzureRedis服务,Redis启用了Network并设置在一个VNET中,现在客户端部署在另一个区域数据中心中,两个数据中心区域使用VNETPeer(对等互连)访问。但是为什么不能访问Redis服务呢? 问题解答根据AzureRedis的官方介绍,因为Redis服务使用了Azure负载均衡,并且......