memcached 与 redis 的区别?

devtools/2024/12/26 20:04:33/

1、Redis 不仅 仅 支 持 简 单 的 k/v 类型 的 数 据 ,同时 还 提 供 list,set,zset,hash等数 据 结 构 的 存 储 。而 memcache 只支 持 简 单 数 据 类 型 ,需要 客 户 端 自 己 处 理 复杂对 象
2、 Redis 支持 数 据 的 持 久 化 , 可 以 将 内 存 中 的 数 据 保 持 在 磁 盘 中 , 重 启 的 时 候 可以再 次 加 载 进 行 使 用 ( PS:持 久 化 在 rdb、 aof)。
3、由 于 Memcache 没有 持 久 化 机 制 , 因 此 宕 机 所 有 缓 存 数 据 失 效 。 Redis 配置为持 久 化 , 宕 机 重 启 后 , 将 自 动 加 载 宕 机 时 刻 的 数 据 到 缓 存 系 统 中 。 具 有 更 好 的灾备 机 制 。
4、Memcache 可以 使 用 Magent 在客 户 端 进 行 一 致 性 hash 做分 布 式 。Redis 支持在 服 务 器 端 做 分 布 式( PS:Twemproxy/Codis/Redis-cluster 多种 分 布 式 实 现 方式)
5、Memcached 的简 单 限 制 就 是 键 ( key)和 Value 的限 制 。最大 键 长 为 250 个字符 。 可 以 接 受 的 储 存 数 据 不 能 超 过 1MB(可 修 改 配 置 文 件 变 大 ) , 因 为 这 是 典型 slab 的最 大 值 , 不 适 合 虚 拟 机 使 用 。 而 Redis 的 Key 长度 支 持 到 512k。
6、 Redis 使用 的 是 单 线 程 模 型 , 保 证 了 数 据 按 顺 序 提 交 。 Memcache 需要 使 用cas 保证 数 据 一 致 性 。 CAS( Check and Set)是 一 个 确 保 并 发 一 致 性 的 机 制 , 属于 “ 乐观 锁 ” 范畴 ; 原 理 很 简 单 : 拿 版 本 号 , 操 作 , 对 比 版 本 号 , 如 果 一 致 就 操
作, 不 一 致 就 放 弃 任 何 操 作 。 由 于 Redis 只使 用 单 核 , 而 Memcached 可以 使 用 多 核 , 所 以 平 均 每一个 核 上 Redis 在存 储 小 数 据 时 比 Memcached 性能 更 高 。而在 100k 以上 的 数据中 , Memcached 性能 要 高 于 Redis 。
7、 memcache 内存 管 理 : 使 用 Slab Allocation。原 理 相 当 简 单 , 预 先 分 配 一 系列大 小 固 定 的 组 ,然后 根 据 数 据 大 小 选 择 最 合 适 的 块 存 储 。避免 了 内 存 碎 片 。( 缺点: 不 能 变 长 , 浪 费 了 一 定 空 间 ) memcached 默认 情 况 下 下 一 个 slab 的最 大 值为前 一 个 的 1.25 倍。
8、redis 内存 管 理 : Redis 通过 定 义 一 个 数 组 来 记 录 所 有 的 内 存 分 配 情 况 , Redis采用 的 是 包 装 的 malloc/free, 相较 于 Memcached 的内 存 管理 方 法 来 说 , 要简单很 多 。由于 malloc 首先 以 链 表 的 方 式 搜 索 已 管 理 的 内 存 中 可 用 的 空 间 分 配 ,导致内 存 碎 片 比 较 多


http://www.ppmy.cn/devtools/145607.html

相关文章

python脚本实现csv中百度经纬度转84经纬度

数据准备 csv文件,带百度经纬度字段:bd09_x,bd09_y 目的 将百度经纬度转换为84经纬度,并在csv文件中添加两个字段:84_x,84_y python脚本 from ChangeCoordinate import ChangeCoordimport pandas as pd import numpy as npcoord = ChangeCoord()def bd09_to_wgs84

【数据结构练习题】链表与LinkedList

顺序表与链表LinkedList 选择题链表面试题1. 删除链表中等于给定值 val 的所有节点。2. 反转一个单链表。3. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。4. 输入一个链表,输出该链…

微服务——数据管理与一致性

1、在微服务架构中,每个微服务都有自己的数据库,这种设计有什么优点和挑战? 优点挑战服务自治:每个微服务可独立选择适合自己的数据库类型。数据一致性:跨微服务的事务难以保证强一致性。故障隔离:一个微服…

ip归属地跨省会变吗?ip地址归属地不对怎么办

在数字化时代,IP地址作为连接互联网的桥梁,不仅承载着数据传输的重任,还常常与用户的地理位置紧密相连。随着人们跨地域活动的增多,IP归属地的变化成为了一个普遍关注的话题。本文将深入探讨IP归属地跨省是否会发生变化&#xff0…

Spring源码_05_IOC容器启动细节

前面几章,大致讲了Spring的IOC容器的大致过程和原理,以及重要的容器和beanFactory的继承关系,为后续这些细节挖掘提供一点理解基础。掌握总体脉络是必要的,接下来的每一章都是从总体脉络中, 去研究之前没看的一些重要…

微软在AI时代的战略布局和挑战

微软的CEO萨提亚纳德拉(Satya Nadella)在与投资人比尔格里(Bill Gurley)和布拉德格斯特纳(Brad Gerstner)的一场深度对话中,详细回顾了微软在AI时代的战略布局与所面临的挑战。这场对话不仅总结…

记录学习《手动学习深度学习》这本书的笔记(六)

看到第九章:现代循环神经网络了,循环神经网络这块真的有点难,而且老师也没有细讲这块,只能自己慢慢理解。 第九章:现代循环神经网络 9.1 门控循环单元(GRU) 这一节介绍了一个循环神经网络的“…

【报错】node:internal/modules/cjs/loader:936

报错问题: 当执行npm run dev后,出现下面错误 这个错误一般是由于Node.js无法找到所需的模块而引起的,解决此问题的一种方法就是重新安装所需的模块。 解决办法: 删除npm install 所下载在项目里的node_modules文件执行操作&…