MemCache是什么
MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的API使得MemCache能用于Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序语言。
另外,说一下MemCache和MemCached的区别:
1、MemCache是项目的名称
2、MemCached是MemCache服务器端可以执行文件的名称
MemCache的官方网站为http://memcached.org/
Redis是什么
Redis的的是完全开源免费的,遵守BSD协议,是一个高性能的键值数据库。是当前最热门的的的NoSql数据库之一,也被人们称为数据结构服务器。
那为什么要用Redis呢?原因很简单,快!
这个问题在大并发,高负载的网站中必须考虑.redis数据库中的所有数据都存储在内存中。由于内存的读写速度远快于硬盘,因此Redis的的的在性能上对比其他基于硬盘存储的数据库有非常明显的优势。
项目中使用Redis的的的,主要是从两个角度去考虑:性能状语从句:并发。当然,Redis的的的还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有其他中间件代替,并不是非要使用Redis的的的。因此,这个问题主要从性能和并发两个角度去答。
性能:
我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存,这样,后面的请求就去缓存中读取,请求使得能够迅速响应。
并发:
在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用的的Redis的做一个缓冲操作,让请求先访问到的Redis的的,而不是直接访问数据库。
redis的的的的优势:
1,运行在内存,速度快官方号称支持并发11瓦特读操作,并发8瓦特写操作,可以说是相当彪悍了。
2,数据虽在内存,但是提供了持久化的支持,即可以将内存中的数据异步写入到硬盘中,同时不影响继续提供服务
3,支持数据结构丰富(string(字符串),list(链表),set(集合),zset(sorted set - 有序集合))和Hash(哈希类型,md5加密出来的那个串)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
二者区别:
1.Redis中,并不是所有的数据都一直存储在主内存中的,这是和MemCache相比一个最大的区别。
2.memcache只支持k-v结构,redis支持5种数据类型,字符串,链表,哈希,集合,有序集合。
3.MemCache单个k-v大小有限,一个value最大只支持1MB,key最大250个字符,而Redis最大支持512MB
4.MemCache无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失,Redis支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失手段。
5.Redis单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。
6.分布式设定MemCache集群,利用magenta做一主多从,redis可以做一主多从,也可以一主一从。(MemCache虽然被称为"分布式缓存",但是MemCache本身完全不具备分布式的功能,MemCache集群之间不会相互通信)
7.redis除了作为数据库使用之外,还可以做消息队列,数据堆栈和数据缓存等,MemCache适用于缓存sql语句,数据集,用户临时性数据,延迟查询数据 session等。