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

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

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-23 10:29:00 | 显示全部楼层 |阅读模式
1  Redis架构分析1.1   为什么要用nosqlàredis?
1)存储方式的区别:
  nosql:使用K-V的方式存储数据
例如:mset   id 0001  name  zhangsan age   18
  关系型数据库:使用多表结构关联的方式存储数据
例如:
Id
Name
Age
0001
Zhangsan
18

2)读写方式的区别:
  nosql:可以把不同类型的数据通过k-v的方式进行快速的读写操作,无关系性、数据结构简单。
  关系型数据库:在不同类型的数据下需要进行多表关联的方式读写,造成性能上损耗     
wKiom1WEI1Sj3U50AAG1tbDFox0900.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 redis1)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  关系型数据库在电商网站中存储的是后台业务类型的数据。
wKioL1WEJayhfQSSAAE7qyb-wK8688.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-79739-1-1.html 上篇帖子: Linux下安装Redis及Linux下php安装Redis扩展 下篇帖子: Redis 2.8 运维,搭建集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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