课堂课题:
Memcache和Redis的区别是什么?
关联任务:
任务五
直播时间:
2018-12-12 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)结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
大家好,我是IT修真院西安分院第4期的JAVA学员,一枚正直纯洁善良的JAVA程序员。今天给大家分享>MemCache和Redis的区别
一、.背景介绍
1.1、Memcache 是 danga.com 的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。
1.2、Redis:2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统 LLOOGG.然而没过多久该公司的创始人 Salvatore Sanfilippo 便对MySQL 的性能感到失望,于是他决定亲自为 LLOOGG 量身定做一个 数据库,并于 2009 年开发完成,这个数据库就是Redis。
1.3、MemCache
MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。
1.4、 Redis:
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
二、知识剖析
MemCache和Redis的区别
(1)数据类型支持不同
(2)内存管理机制不同
(3)数据持久化支持
(4)集群管理的不同
2.1.数据类型支持不同
Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储
Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用缓存其他东西,
例如图片、视频等等
2.2内存管理机制不同
MemCache: memcache使用slab allocator机制来内存管理。
slab allocator原理:先将内存划分为多个slab class仓库,每个仓库切分成不同尺寸的小块chunk。
需要存储内容时候,判断内容大小,为其选择合理的仓库;
Redis:底层实现通过对malloc/free进行封装来实现,通过存储数据的size,来申请一段连续的内存空间;
2.3数据存储及持久化
memcached不支持内存数据的持久化操作,所有的数据都以in-memory的形式存储。
redis支持持久化操作。
2.4集群管理不同
Memcached本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现
Memcached的分布式存储。
相较于Memcached只能采用客户端实现分布式存储,Redis更偏向于在服务器端构建分布式存储。
Redis本身提供集群服务的。
三、常见问题
Memcache和Redis集群对比简介
四、解决方案
Memcached本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现Memcached的分布式存储。
当客户端向Memcached集群发送数据之前,首先会通过内置的分布式算法计算出该条数据的目标节点,然后数据会直接发送到该节点上存储。但客户端查询数据时,同样要计算出查询数据所在的节点 ,然后直接向该节点发送查询请求以获取数据。
Redis官方集群方案 Redis Cluster</p>
Redis Cluster是一种服务器Sharding技术,3.0版本开始正式提供。对客户端来说,
整个cluster被看做是一个整体,客户端可以连接任意一个node进行操作,就像操作单一Redis实例一样,
当客户端操作的key没有分配到该node上时,就像操作单一Redis实例一样,
当客户端操作的key没有分配到该node上时,Redis会返回转向指令,指向正确的node,
五、编码实战
六、扩展思考
6.1.扩展思考
redis的持久化方法
redis提供了两种不同的持久化方法来讲数据存储到硬盘里面,一种是快照(snapshotting),它可以将存在于某一时刻的所有数据都写入硬盘里面,另一种方法叫只追加文件(append-only file, AOF),它会在执行写命令时,将被执行的写命令复制到硬盘里面。
七、参考文献
https://blog.csdn.net/u011489043/article/details/78922390
https://www.cnblogs.com/_popc/p/5968683.html
八、更多讨论
Q1:西安分院鲁伯良:redis和memcache的性能差异?
由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。
而在100k以上的数据时,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化。 但是比起 Memcached,还是稍有逊色。
Q2西安分院赵立鼐:redis和memcache对数据操作效率的差异
Redis相比Memcached来说,拥有更多的数据结构并支持更丰富的数据操作,通常在Memcached里, 你需要将数据拿到客户端来进行类似的修改再set回去,序列化再反序列化,这大大增加了网络IO的次数和数据体积。 在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
Q3西安分院郭靖:与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多。
最为常用的数据类型主要由五种:String、Hash、List、Set和Sorted Set。Redis内部使用一个redisObject对象来表示所有的key和value。。
技能树.IT修真院“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~我的邀请码:28769611,或者你可以直接点击此链接:http://www.jnshu.com/login/1/28769611
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
[西安|荣耀师兄]JAVA-郭靖 发表于 2018-12-17 10:17:33 #1
redis和memcache的知识讲了不少,区别也列出了,缺少一些实战的东西,可以了解一下集群的实现和redis怎么将数据持久化
回复