IT修真院·小课堂丨互联网职业小课堂在线学习平台

课堂课题:

Memcache和Redis的区别是什么?

关联任务:

任务五

直播时间:

2019-08-17 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)结束语:

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

Memcache和Redis的区别是什么?    

辅导师兄


大家好,我是IT修真院西安分院第6期的学员王鹏,一枚正直纯洁善良的XX程序员,今天给大家分享一下,修真院官网Java任务六,深度思考中的知识点——Memcache和Redis的区别是什么?

(1)背景介绍:

我们平时常见的数据库,比如oracle、mysql等,数据都是存放在磁盘中。虽然在数据库层也有对应的缓存,但这种数据库层次的缓存一般针对的是查询内容,而且粒度也太小,一般只有表中数据没有变更的时候,数据库对应的cache才发挥了作用。但这并不能减少业务系统对数据库产生的增、删、查、改的庞大IO压力。所以数据库缓存技术在此诞生,实现热点数据的高速缓存,提高应用的响应速度,极大缓解后端数据库的压力。市面上主流的NoSQL数据库缓存主要有两个:Redis与Memcached,这里介绍一下两者的区别。


(2)知识剖析:

2.1 什么是Memcached?

MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。

它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。

MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的API使得MemCache能用于Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序语言。


2.2 Memcached的特点    

(1)MemCache中可以保存的item数据量是没有限制的,只要内存足够

(2)MemCache单进程在32位机中最大使用内存为2G,这个之前的文章提了多次了,64位机则没有限制

(3)Key最大为250个字节,超过该长度无法存储

(4)单个item最大数据是1MB,超过1MB的数据不予存储

(5)MemCache服务端是不安全的,比如已知某个MemCache节点,可以直接telnet过去,并通过flush_all让已经存在的键值对立即失效

(6)不能够遍历MemCache中所有的item,因为这个操作的速度相对缓慢且会阻塞其他的操作


2.3 什么是Redis?

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。


2.4 Redis的特点

(1)Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

(2)Redis不仅仅支持简单的key-value类型的数据,同时还提供String,list,set,zset,hash等数据结构的存储。

(3)Redis支持数据的备份,即master-slave模式的数据备份。

(4)性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

(5)原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。

(6)丰富的特性 – Redis还支持 publish/subscribe, 通知, 设置key有效期等等特性。


(3)常见问题:

3.1 Memcache和Redis的区别是什么?


3.2 Memcache和Redis集群对比简介


(4)解决方案:

区别:

(1)数据结构:Memcache仅能支持简单的K-V形式,Redis不仅如此,同时还提供list,set,hash,zset等数据结构的存储

(2)多线程:Redis只使用单核,而Memcached可以使用多核,所以在比较上,平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis

(3)持久化:Redis支持持久化,Memcache不支持持久化</p>

(4)分布式:Redis做主从结构,而Memcache服务器需要通过hash一致化来支撑主从结构

(5)存储方式:memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小. redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化(有快照和AOF日志两种持久化方式)

(6)内存使用率:对于key-value这样简单的数据储存,memcache的内存使用率更高。如果采用hash结构,redis的内存使用率会更高

(7)虚拟内存:Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘

(8)过期策略:memcache过期后,不删除缓存,会导致下次取数据的问题,Redis有专门线程,清除缓存数据


对比简介:

(1)Memcached本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现Memcached的分布式存储,当客户端向Memcached集群发送数据之前,首先会通过内置的分布式算法计算出该条数据的目标节点,然后数据会直接发送到该节点上存储。但客户端查询数据时,同样要计算出查询数据所在的节点,然后直接向该节点发送查询请求以获取数据。

(2)Redis官方集群方案 Redis Cluster,Redis Cluster是一种服务器Sharding技术,3.0版本开始正式提供。对客户端来说,整个cluster被看做是一个整体,客户端可以连接任意一个node进行操作,就像操作单一Redis实例一样,当客户端操作的key没有分配到该node上时,就像操作单一Redis实例一样,当客户端操作的key没有分配到该node上时,Redis会返回转向指令,指向正确的node。



(5)编码实战:



(6)拓展思考:

6.1 区别总结

两者进行对比,是因为都是内存数据管理系统,而实际上两者之间区别还是很大。

Redis更多的象一个键值对数据,包括数据的持久化,主从架构,数据备份等策略都是为了保证数据安全以及高可用,而Memcache更多的是一个数据缓存系统是为了提升数据的读取效率,所以两者的应用也有所不同,Memcache适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等工作场合,Redis除去做Nosql数据库使用外,还能用做消息队列,数据堆栈和数据缓存等。

简而言之:有持久化需求或者对数据结构和处理有高级要求的应用,选择redis,其他简单的key/value存储,选择memcache。



6.2 什么叫一致性哈希,通常用来解决什么问题?

一致性哈希是一种哈希算法,可以有效解决分布式存储下增加或删除节点所带来的问题。它和hash最关键的区别就是,对节点和数据,都做一次哈希运算,然后比较节点和数据的哈希值,数据取和节点最相近的节点做为存放节点。这样就保证当节点增加或者减少的时候,影响的数据最少。



(7)参考文献:

百度百科

https://www.cnblogs.com/lijiasnong/p/5013990.html

https://www.cnblogs.com/xrq730/p/4948707.html


(8)更多讨论:


(9)结束语:

今天的分享就到这里啦,欢迎大家提问、互相探讨~


技能树.IT修真院“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~我的邀请码:35313896,或者你可以直接点击此链接:http://www.jnshu.com/login/1/35313896



评论

请您登录 后进行评论