ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

分布式缓存系统

2021-11-17 11:34:07  阅读:137  来源: 互联网

标签:缓存 SSDB 系统 数据库 Redis MemCache 分布式


分布式缓存

分布式缓存是为了解决 数据库服务器 和 Web服务器 之间的瓶颈,如果一个网站流量很大这个瓶颈将会非常明显,每次数据库查询耗费的时间将不容乐观。对于更新速度不是很快的站点,可以采用静态化来避免过多的数据查询,可使用Freemaker或Velocity来实现页面静态化。对于更新数据以秒级的站点,静态化也不会太理想,可通过分布式缓存系统来解决,如Redis、MemCache、SSDB等。

分布式缓存系统出现的原因

  1. 互联网或电商应用系统中,业务需求复杂,必须对整个业务系统进行垂直拆分,以保证各个业务模块清晰并对外提供服务。
  2. 用户群体广泛就必然存在高并发的问题,如果将引用系统部署在单节点服务器上,势必会对单服务器造成巨大的访问压力,因此需要将系统部署到不同的节点上,同时也要将不同的数据分散到不同的节点上。
  3. 互联网时代大数据为王,人类正从IT时代走向DT时代,因为数据量大所以要对数据进行分布式处理。

数据存储方案

提到数据就不得不说数据库,目前主流的数据存储方案分为两个方向:

 

 

 

  数据存储方案
  • 关系型数据库
    如Oracle、MySQL、DB2、MSSQL...
  • 非关系型数据库
    如MongoDB、HBase、Redis、LevelDB、CouchDB...
 

 

 

关系型与非关系型数据库之间的异同点

在Web开发中,经常要重复从数据库中获取相同的数据,这种重复的操作极大地增加了数据库的负载。缓存是解决这种问题最好的办法。

Redis就是一个高性能的、分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

    分布式缓存系统

在用户第一次发送请求时,从关系型数据库RDBMS中获取数据并返回,同时将该数据保存到分布式缓存系统中。当用户再次发送请求时,直接从分布式缓存系统中获取,以提高性能。这里使用Redis做集群的主从策略来实现高可用架构。

分布式缓存产品

实际开发中经常使用的分布式缓存系统主要有Redis、MemCache、SSDB,这三者都是KV存储方案,各有优缺,但Redis相比较而言实用性更加广泛。由于Redis特点突出,支持多种数据类型,如String、Hash、Set、List、StoredSet,并且有高可用的解决方案和集群方案,支持水平扩容。也就解决了大部分企业的需求,而MemCache、SSDB相对来说,解决方案并不算那么完善。

Redis与MemCache的区别

  • 线程操作

Redis使用单核而Memcache使用多核,也就是说,Redis属于单线程操作,MemCache属于多线程操作。在多个用户同时请求时,Redis是处理完一个请求以后再去处理下一个请求。而MemCache可以同时处理多个请求。

  • 数据结构

Redis不仅支持简单的KV类型的数据,同时提供List、Set、Hash等数据结构的存储。

  • 数据安全性

Redis和MemCache都是将数据存储在内存中,都属于内存数据库。但是MemCache服务宕机或重启后数据是不可恢复的,而Redis服务宕机或重启后可以恢复。因此Redis可以做持久化,它会将内存数据定期同步到磁盘中。

Redis提供两种持久化策略,默认支持的是RDB持久化以及需要手工开启的AOF持久化。而MemCache仅仅是将数据存储在内存中。

  • 数据备份

Redis支持数据备份,需开启master-slave主从策略。

  • 过期策略

MemCache在set时就指定了过期时间,而Redis可以通过expire设置Key的过期时间。

  • 内存回收

MemCache有内存回收机制,当程序中为它设置的内存大小,一旦存储的数据超过时,它会去自动回收,也就是释放,不然会出现内存溢出的情况。这是因为MemCache的数据都是存储在内存中的。而Redis不会出现这种情况,因为Redis可以将数据持久化到磁盘上。

Redis和SSDB的区别

SSDB是基于Google性能极高的LevelDB作为存储引擎去架构的,特性与Redis基本一致,而且可以和Redis完美整合。SSDB完全可以替换Redis,它与Redis的API兼容并支持Redis的客户端,也就是说,在redis-cli上的所有操作在SSDB中同样适用。由于SSDB该性能的写特性,所以很多时候可以通过Redis+SSDB实现分布式缓存的策略,即"用SSDB写用Redis读"。

Redis

Redis是一个开源的面向键值对Key-Value类型数据的分布式NoSQL数据库系统,它的特点是高性能,适用于高并发的应用场景。可以说Redis纯粹是为应用而产生的。

Redis是一个高性能的KV数据库,并提供多种语言的API。Redis的缺点也很明显,对事务的处理很弱,也无法做太复杂的关系型数据库中的模型。

Redis支持存储的Value类型相对更多,典型的如字符串String、链表List、集合Set、有序集合Zset(sorted set)、哈希类型Hash,这些数据类型都支持push和pop、add和remove,以及取交集、并集、差集等更为复杂的操作。由于这些操作都是原子性的,在此基础上,Redis支持各种不同方式的排序。

与MemCache一样为了保证效率,数据都被缓存在内存中,区别在于Redis会周期性的把更新的数据写入磁盘,或把修改操作写入追加的记录文件中,并且在此基础上实现master-slave主从同步策略,也就是数据可以从主服务器向任意数量的从服务器上同步,从服务器可以关联其他类型的主服务器。因此,Redis的出现很大程度上弥补了MemCahe此类KV存储的不足,在部分场合可以对关系型数据库起到很好的补充作用。

   
   




标签:缓存,SSDB,系统,数据库,Redis,MemCache,分布式
来源: https://www.cnblogs.com/chenxiaomeng/p/15566389.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有