redis-大数据量访问场景小聊

  
转载:http://aodi.paic.com.cn/forum.php?mod=viewthread&tid=5232&fromuid=1
感谢同事的分享。
很多同事不是很清楚redis可以干嘛,这边就简单的聊下。
     首先从基础开始,什么是redis,它和我们常说的NOSQL是什么关系?

Redis 是一个内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件。说白了主要就是用来缓存数据。
而NOSQL从字面意思来看是  not only SQL,意思就是运用非关系型的数据存储。REDIS也是NOSQL数据库的一种,
并不是说不使用SQL语句,很多封装方法后,用起来和普通的SQL语法一样样的。

      那么他如果操作,能实现什么呢?
       String ,Hash ,List ,Set,Sorted set 5   常用的数据类型,并且有持久化功能。


在JAVA封装后,你可以像操作java常用的数据类型一样去操作REDIS。
具体的5种特性属性,这里就不介绍了。有意者随便百度下。

Redis是单线程的,但是,处理速度非常的快。可以用redis做为一个消息队列,个人觉得它属于轻量级的,没有ACTIVEMQ那些繁重。
数据提交可以操作 pipline进行批量的处理数据,进行异步的提交。速度杠杠的。
redis在缓存的定义上是真正意义上的内存式缓存。不像MongoDB,利用索引,海量数据的存储镜像需要存在磁盘上或虚拟内存上。而
redis通过算法,将常用的数据类型,放在内存里,将不常用的进行持久化,移出内存空间。这个机制,非常类型JAVA的VM,了解新生代,
老年代,持久代的定义后,就不难理解redis的这个机制了。
Redis将内存的保存地址进行哈希排序,标记产生哈希槽。Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16  算法算出一个结果,然后把结果对 16384 取模,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。所以需要配置 内存的maxmemory策略,以免内存达到极限。
使用哈希槽的好处就在于可以方便的添加或移除节点。
当需要增加节点时,只需要把其他节点的某些哈希槽挪到新节点就可以了;
当需要移除节点时,只需要把移除节点上的哈希槽挪到其他节点就行了。
集群、主备防灾说的通俗点就是 对 哈希槽 的监管权的拥有。如果主有问题,就快速死掉,把哈希槽的拥有权给备机监管。
在持久化的时候,有2种方式:AOF和RDB。
RDB是可以配置指定的时间间隔对数据进行快照存储。
而AOF持久方式是对REDIS进行写的操作都进行存储。意思就是实时备份,所以通常
情况下AOF文件的数据集要完整一些。

那我们为什么要用它?
    既然 REDIS 是一种缓存管理工具。它当然可以取代现有一些 CACHE 的工具。
那我们到底怎么使用它能够给我们带来巨大的收益呢?
我们会在什么样的场景下使用它? 看下这个逻辑金字塔模型,能够稍稍的解释一些使用

这3个分层的金字塔三角形,从底层开始说,第3层 游客,就是说客户随意逛逛,粘合度不高的,不会最终交易。第2层就是有自己喜好的,对这边有感兴趣的点。可以下单,但不一定会买。第一层金字塔顶层,就是 忠实客户会购买喜欢的产品。
可以看出整个流量数据是 第一层往后越少。
而实际应用中,如果所有的信息读写都是来自数据库的话,I/O的所有负担都压在了数据库上,而真正业务是要实现快速交易。流量一旦上来,发现查询也查不了,交易也交易不了,都堵塞了。所以并不是所有的操作都需要去访问数据库,这种海量数据下非常容易击穿数据库。导致生产事故。

在这样大数据量的频繁查询下,这个场景下,REDIS就派上了用场。

Redis 缓存客户信息,用 session id 或者有 access_token 做为 key expire  时间为 30 分钟。
而网站信息缓存 信息,产品说明等。这样   就把大部分的流量拦截了下来,数据库的 I/O 解放了出来,
客户最先登录后,就把页面显示的信息,个人信息都缓存好了。无论怎么刷新,
退出登录都不会访问到数据库了。   数据库可以专心的等待交易的进行。
当然缓存的信息都是不常改变的,如产品说明,列表等等这些,另外的像客户信息如购买了产品后,
记得更新缓存,因为产品列表,个人信息发生了变化。
在分布式环境里,nginx作为负载均衡,轮询服务器, redis 做为  分布式会话 缓存工具   尤其常见。
再加上一些静态页面的处理,动静态分离,数据库读写分离,Java虚拟机的优化,TOMCAT容器的优化
等等,大数据量下的优化措施能把以前的拖拉机变成豪华飞机。有机会再讲下现在常见的分布式大型网站的建设
今天到此结束,码字辛苦,谢谢。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值