前言

在阅读了《大型网站技术架构:核心原理与案例分析》书后,稍微了解了Redis在大型网站架构中的应用场景和目的。

大型网站都是从小用户量,小流量的网站演变过来的,在小型网站的架构之初,Linux+Apache+PHP+Mysql即可实现。但是随着用户量持续增长,在LAPM架构中一个非常关键的点限制了网站性能:Mysql数据库

  • 在大用户量、大并发的场景中,Mysql数据库的磁盘I/O,多线程并发过程中表锁行锁都都极大程度上限制了网站的响应、吞吐量;
  • 对一些热点数据反复的查询造成不必要的磁盘I/O;

这些都降低了网站性能,增加了网站响应延迟、降低吞吐量。

因为这些问题的存在,内存读写/缓存势在必行。数据在内存,减少/避免磁盘IO。从而出现分布式缓存解决以上问题。

应用场景

Redis的应用场景诸多,这里也是总结工作中的应用和收集网友分享的内容。

  • 分布式缓存:Redis采用client-server的模式,所以对于分布式/集群环境中作为独立的cache server是个不错的选择;

  • NoSql数据库:在很多特殊场景中,关系型数据库并不非常适合表达业务模型时,Redis也是不错的选择;

以上两点是Redis的大方向上的应用!但是由于Redis提供的特性,它还支持其他的非常多的应用场景:

  • 作为全局队列:Redis提供了List列表的数据类型,先进先出。比如任务调度;

  • 应用在生产消费者模式或者发布订阅模式:Redis提供了List列表的数据类型,阻塞式读。Redis同时也提供了Pub/Sub支持;

  • 排行榜/评论排序:Redis提供了Sorted Set有序集合,可以应用在数据排序上;

  • 最新文章/评论:Redis提供了List列表的数据类型,且支持对List进行范围操作;

  • 用户登录状态:Redis有Bitmap可以存储关联一个对象事物的是否状态:0/1。如果用户ID是自增长,可以作为Bitmap的下标,是否登录用0/1表示。

  • 分布式Session:上面说了Redis可以作为分布式缓存,可以存储分布式Session。

  • 分布式锁:因为Redis的client-server模式和单线程特性,对于key的操作可以作为全局的唯一识别;

Redis还有很多应用场景,这里先暂时总结如此,后面发现更多的神级使用方式时,再继续更新。

Redis(序)应用场景的更多相关文章

  1. redis的使用场景和基本数据类型

    一:redis使用的场景 redis是一个高性能的NoSQL数据库,特点是高性能,持久存储,适应高并发的应用场景. 下面看看它的使用场景1.取最新N个数据的操作比如取网站的最新文章,通过下面方式,我们 ...

  2. redis系列-redis的使用场景

    redis越来越受大家欢迎,提升下速度,做下缓存,完成KPI之利器呀.翻译一篇文章<<How to take advantage of Redis just adding it to yo ...

  3. Redis 数据结构使用场景

    转自http://get.ftqq.com/523.get 一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的 ...

  4. redis的适应场景

    redis应用场景: 1.对数据高并发读写 2.对海量数据的高效存储和访问 3.对数据的高可扩展性和高可用性 做分布式扩展很简单,因为没有固定的表结构 redis介绍: redis是一个key-val ...

  5. Lua脚本在redis分布式锁场景的运用

    目录 锁和分布式锁 锁是什么? 为什么需要锁? Java中的锁 分布式锁 redis 如何实现加锁 锁超时 retry redis 如何释放锁 不该释放的锁 通过Lua脚本实现锁释放 用redis做分 ...

  6. redis作为缓存场景使用,内存耗尽时,突然出现大量的逐出,在这个逐出的过程中阻塞正常的读写请求,导致 redis 短时间不可用

    redis 突然大量逐出导致读写请求block   内容目录: 现象 背景 原因 解决方案 ref 现象 redis作为缓存场景使用,内存耗尽时,突然出现大量的逐出,在这个逐出的过程中阻塞正常的读写请 ...

  7. redis 发展史 应用场景

    引言 在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用, 原因是因为那时候Web站点基本上访问和并发不高.交互也较少. 而在后来,随着访问量的提升,使用关系型数据库的Web站点多多少 ...

  8. redis的使用场景和优缺点

    使用场景和优缺点: 2 Redis用来做什么? 通常局限点来说,Redis也以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求.而通常在一个电商类型的数据处理过程之中,有关商品,热销, ...

  9. Redis数据类型使用场景及有序集合SortedSet底层实现详解

    Redis常用数据类型有字符串String.字典dict.列表List.集合Set.有序集合SortedSet,本文将简单介绍各数据类型及其使用场景,并重点剖析有序集合SortedSet的实现. Li ...

  10. 1.Redis的应用场景

    转自:http://www.runoob.com/redis/redis-tutorial.html Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在 ...

随机推荐

  1. 用实力燃爆暑期丨i春秋渗透测试工程师线下就业班开课了!

    i春秋&赛虎暑期渗透测试工程师线下就业班开课了! 本期开班地点:北京,面授脱产:四个月. 如果这次没来得及报名的同学也可以选择9月份广州的班次,具体开班时间请咨询谢老师:18513200565 ...

  2. 深入理解--VUE组件中数据的存放以及为什么组件中的data必需是函数

    1.组件中数据的存放 ***(重点)组件是一个单独模块的封装:这个模块有自己的HTML模板,也有data属性. 只是这个data属性必需是一个函数,而这个函数返回一个对象,这个对象里面存放着组件的数据 ...

  3. PMP备考-第三章-项目管理过程

    过程:完成预定目标的,一系列相互关联的活动的集合,以便运用一些列工具与技术把特定的输入转化成特定的输出. 五大项目管理过程组:启动-规划-执行-监控-收尾 戴明环(PDCA循环):计划-实施-检查-行 ...

  4. Spring Cloud Netflix之Eureka Clients服务提供者

    之前一章我们介绍了如何搭建Eureka Server,这一章,我们介绍如何搭建服务提供者. Eureka Clients介绍 服务的提供者,通过发送REST请求,将自己注册到注册中心(在高可用注册中心 ...

  5. Django Form 初始化数据

    修改 urls.py 添加 path('initial.html', views.initial), 修改 models.py class UserInfo(models.Model): name = ...

  6. sqlmap 注入的方法及技巧

    sqlmap 注入的方法及技巧 当给 sqlmap 这么一个 url 的时候,它会: 1.判断可注入的参数 2.判断可以用那种 SQL 注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些 ...

  7. Resin 4.0 部署SSL证书

    前言 Resin目前最新的版本还是4.0 (4.0.49),使用Java EE6,在Resin上部署证书,一般有两种方式,首先我们推荐采用Openssl方式,不仅因为Openssl模式下的速度更快,而 ...

  8. springcloud学习之路: (四) springcloud集成Hystrix服务保护

    Hystrix是一套完善的服务保护组件, 可以实现服务降级, 服务熔断, 服务隔离等保护措施 使用它可以合理的应对高并发的情况 做到保护服务的效果 1. 导入依赖 <dependency> ...

  9. 多线程(五)多线程同步_Event事件

    事件和互斥体同样属于内核同步对象,它和互斥体以及临界区在功能上有以下区别 前面的互斥体和临界区主要作用在于确保控制多个线程之间对共享资源访问,保证共享资源的完整性 事件主要作用是通知其它线程一个操作己 ...

  10. python-下载网页链接

    from urllib.request import urlretrieve url = 'http://images.jupiterimages.com/common/detail/27/68/22 ...