- 缓存的好处
- 减少数据库的访问
- 提供足够的连接,内存
- 基于key-value
- 无需做持久化
特点:由多台机器组装起来的基于内存存储的集群。基于key-value存储数据结构
2.redis:redis是一个非关系型的数据库,但是他担不起数据库的任务,打个比方你就能够明白,因为redis是存储在内存中的,当你的产品拥有1万人是在活跃状态,还有5万人非活跃状态,那么这个5万人的信息也将加载在我们的内存中,每一次备份的时候还是备份6万人的操作信息,这样他的缺点是不是很明显了。
- 用SSDB来代替redis,使用redis成本要高一些,如果不差钱的话建议用redis
说下SSDB的核心构建:底层用的是谷歌的LevelDB存储,在用户存储信息的时候,他先用一个日志去记录写入的数据,这也算他是写入成功的,当他的信息量存储过大的时候才开始落盘(一次性写入磁盘上) - 用mongodb用来存储冷数据,redis用来存储热数据
3.分布式缓存技术选取的介绍:先列出市面上常见的一些用来作为缓存的技术redis,memcache,mongoDB,一些关系型数据库实现高效的查询效率是不可能实现的我们可以排除了它。对于mongoDB我们也应该排除他,他是一个NoSql的产品,他只是能过存储大量的数据,具备着大量数据快速查询功能,不适宜做缓存
- redis 和 memcache进行对比
分析memcache:
memcache是一个高性能的分布式内存对象缓存系统,用于在web服务中减轻数据库服务的负担。它通过在内存中存储数据和对象来减少对数据库的访问的次数,从而提高web服务的效率
memcache缓存的执行过程:
1.接受用户的请求:到memcache去查找信息如果信息存在则执行2返回到客户端,不再去访问数据库,如果不存在则执行3从数据库中去查找过后返回到客户端,并且保存数据
重要的一点是要保存数据的”新鲜性“ 当数据进行了修改操作我们应该对 对应的缓存区域进行清空
注意点:memcache是一个完全在内存中的缓存,他没有序列化的操作,当系统重启的时候数据就会丢失,如果你的需求要保存信息这个无法实现。
分析redis:
redis是一个key-value存储系统,和memcache相识,它支持的value多种存储数据类型 String(字符串),set(集合),list(链表),zset(有序集合),hash(散列结构) 。 并且增删 改这些操作都是原子性的,因此我们在高并发下的没别要去考虑数据的错乱。在此基础上redis还支持各种排序,与memcache一样为了保证效率把数据的存放在内存上,区 别是redis他将会周期性的把数据追加到磁盘上或者把修改的操作记录在日志上,并在此基础上实现了主从同步
redis通常把数据存放在内存,他有一个很重要的特点就是实现数据持久化将内存中的数据不断的写入磁盘(rdb);AOF日志方式,记录每次更新的日志。前者性能较高,但是 可能会引起一定程度的数据丢失;后者相反。 Redis支持将数据同步到多台从数据库上,这种特性对提高读取性能非常有益。
综合的说说他们
memcache和Redis都能很好的满足解决我们的问题,它们的性能都很高,总体来说我们可以把redis当作memcache的升级,加重的实现
-
- 性能上:
性能上都很出色,具体到细节,由于redis只使用单核,而memcache可以使用多核,所以redis在存储小数据时比memcache性能更高,而在100k以上的数据中, memcache的性能要高于Redis - 内存空间和数据量的大小:
memcache可以修改最大内存,采用的是LRU算法,Redi增加了VW的特性突破物理内存的限制。 - 操作便利上:
memcache数据结构单一,仅用来缓存数据,而Redis支持更丰富的数据类型,也可以在服务端进行丰富的数据操作,这样可以减少网络IO次数和数据体积 - 可靠性上:
memcache他不支持数据持久化 在重启或者断电的情况下数据会丢失,而Redis具有数据持久化的功能,但是同时他也付出了性能上面的代价 - 应用场景:
memcache动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大量数据的情况
redis适用于对读写效率要求都很高,数据处理业务复杂和安全性能高
- 性能上:
需要慎重考虑的部分
- memcache单key-value大小有限,一个value最大只支持1M,而redis最大支持512M
- memcache是个内存缓存,对可靠性无要求;而redis更倾向于内存数据库,对可靠性要求高
- 从本质上来讲memcache只是一个单一的key-value内存缓存;而redis是一个数据结构内存数据库支持五种数据类型,因此redis除了可以做缓存以外还可以处理一些简单的逻辑运算,redis不仅可以作为缓存还可以作为数据库使用
- Redis3.0集群分布式,集群的优点就是均衡客户请求,维护性强