设为首页 收藏本站
查看: 719|回复: 0

[经验分享] Redis 2.8 架构分析

[复制链接]

尚未签到

发表于 2018-11-6 10:18:33 | 显示全部楼层 |阅读模式
1  Redis架构分析
1.1   为什么要用nosqlàredis?
  1)存储方式的区别:
  nosql:使用K-V的方式存储数据

  例如:mset  >  关系型数据库:使用多表结构关联的方式存储数据
  例如:
  Id
  Name
  Age
  0001
  Zhangsan
  18
  …
  …
  …
  2)读写方式的区别:
  nosql:可以把不同类型的数据通过k-v的方式进行快速的读写操作,无关系性、数据结构简单。
  关系型数据库:在不同类型的数据下需要进行多表关联的方式读写,造成性能上损耗
DSC0000.jpg

  3)nosql的优缺点
  优点:读写数据快,取决于他的无关系性,数据库结构简单。
  缺点:不支持sql工业化的数据操作,对于业务类型的数据使用不方便,并且最重要的是不支持对于事务的操作。不适合做数据安全性要求很高的数据存储。
1.2   为什么redis可以快速,并且替代memcache,占领市场
1.2.1  为什么要与memcache来比较
  其他的缓存框架(如oscache)只是一个小型的jar包形式的框架,档次不够,而memcache跟redis一样也是可以独立运行在服务器上,并且支持了分布式集群,但是我们今天的redis不光是独立运行,还支持了分布式集群,而且还支持持久化和丰富数据类型,并且在缓存上更加优秀。
1.2.2  了解Memcache实际应用中出现的问题
  1)Memcache数据丢失问题:
  为了防止意外(服务器宕机、断电),会把一个时间段缓存中的数据插入到DB中,这个过程会给服务器运行效率带来巨大的影响,如果这个时候在高并发的时间段,可能造成服务器压力过大出现死机,数据丢失,然而这种数据的丢失对于企业来说却是灾难性的,所以一般我们会把入库的时间与并发的时间分开(2-3个小时)。
  2)数据一致性的问题:
  在这个时差(2-3个小时)有的模块已经修改了DB中的数据,但是memcache还没有同步,所以数据就不一致了,为了解决数据一致和命中率的问题,在企业中通常让客户端请求读取不到的数据,去DB中读取,导致大量请求穿透到DB,导致DB无法支撑。
  3)命中率低问题:
  hash算法是有失误率的,可能在某一段时间的失误率很大导致在memcache中读取不到数据。同时为了解决命中率的问题,在企业中通常也会让客户端请求读取不到的数据,去DB中读取,也会导致大量请求穿透到DB,导致DB无法支撑。
  4)业务量增加、访问量持续增长的问题:
  导致DB(mysql)表结构的变化,需要重新建表、拆表,memcache也需要扩容,这些工作会浪费很多的人力、物力,造成资源上的浪费。
1.2.3  Memcache+mysql  vs redis
  1)redis支持了数据持久化的功能(相当于数据库),我们可以配置让从服务器来做RDB、AOF。
  (a)可以在很大的程度上防止了数据的丢失。
  (b)redis提供了持久化(相当于数据库),可以设计实现前后台数据分离,数据一致性和命中率的问题完全由redis解决。redis存储数据结构简单,建表拆表的情况不存在。
  2)数据类型
  (a)memcache只支持string类型。
  (b)Redis支持5种数据类型,企业使用更加方便。
  3)缓存性能
  (a)缓存性能比memcache优(在数据结构、内存使用上进行了优化调整,所以比memcache性能优)
  (b)内存使用区别:
  Memcache:使用内存池的方式,可以省去申请/释放内存的开销,但是在空间上就有了浪费,因为他不能释放空闲内存空间。当内存空间不够的时候,memcache即便是新数据也会被剔除。
  Redis:现场申请内存的方式来存储数据。所以不存内存空间的浪费。当内存空间不够的时候,即便是导致swap(替换),也不会剔除数据(非临时数据)。所以Redis更适合作为存储而不是cache。
1.3   Redis在企业架构中的应用
  l  redis在电商网站中存储的是门户数据,用来处理大数据,高并发的问题
  l  关系型数据库在电商网站中存储的是后台业务类型的数据。
DSC0001.jpg

1.4   Redis应用场景
  l  应用范围:电商购物商品信息缓存、商品抢购、购票系统的队列、新浪微博对于大量不同数据类型的操作、实时聊天信息平台、游戏排行榜
  可用场景:数据量比较大且数据内容变化大的场合,需要进行数据快速的读写。并且对数据的安全性要求不高。
  不可用的场合:对于数据安全性要求绝对高的情况,比如:银行转账、存取款。
1.5   总结:
  1.nosql->redis与关系型数据库差别:
  存储方式:数据存储结构简单,不存在表关联
  读写速度:速度快,取决于结构简单、无关系型
  2.针对于同级别的缓存框架而言,与memcache的对比
  --缓存性能比memcache好
  --数据类型丰富
  --持久化
  3.用memcache+mysql与redis对比
  业务数据量的不断增加,和访问量的持续增长,遇到的问题:
  --mysql需要建表拆表,memcache需要扩容
  --数据一致性(持久化)
  --访问穿透到DB


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-631419-1-1.html 上篇帖子: Redis 2.8 运维,搭建集群 下篇帖子: redis学习第一天
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表