高并发架构系列

高并发架构系列:数据库主从同步的3种一致性方案实现,及优劣比较

高并发架构系列:Spring Cloud的核心成员、以及架构实现详细介绍

高并发架构系列:服务注册与发现的实现原理、及实现优劣势比较

高并发架构系列:Netty的实现原理、特点与优势、以及适用场景

什么是redis

redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串、哈希、列表、队列、集合结构直接存取,基于内存,可持久化,支持多种开发语言。

redis在高并发场景下的作用不言而喻,今天主要分享Redis大家比较关心的以下几个方面。

redis的数据类型

支持多种数据类型:

1.string(字符串)

String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。

常规key-value缓存应用;

2.list(列表

Redis的list是每个子元素都是String类型的双向链表,可以通过push和pop操作从列表的头部或者尾部添加或者删除元素,这样List即可以作为栈,也可以作为队列。

使用List结构,我们可以轻松地实现最新消息排行等功能。

3.hash(散列)

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

存储部分变更的数据,如用户信息等。

4.sets (集合)

set就是一个集合,集合的概念就是一堆不重复值的组合。利用Redis提供的set数据结构,可以存储一些集合性的数据。set中的元素是没有顺序的。

5.sorted set(有序集合)

和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。

redis的特点

1.单线程,利用redis队列技术并将访问变为串行访问,消除了传统数据库串行控制的开销

2.redis具有快速和持久化的特征,速度快,因为数据存在内存中。

3.分布式 读写分离模式

4.支持丰富数据类型

5.支持事务,操作都是原子性,所谓原子性就是对数据的更改要么全部执行,要不全部不执行。

6.可用于缓存,消息,按key设置过期时间,过期后自动删除

redis的持久化存储

Redis支持两种数据持久化方式:RDB方式和AOF方式。前者会根据配置的规则定时将内存中的数据持久化到硬盘上,后者则是在每次执行写命令之后将命令记录下来。两种持久化方式可以单独使用,但是通常会将两者结合使用。

1.RDB持久化

原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化。

指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。

2.AOF(append only file)持久化

原理是将Reids的操作日志以追加的方式写入文件。

以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

redis的集群方案有哪些

redis 集群方案主要有两类,一是使用类 codis 的架构,按组划分,实例之间互相独立;

另一套是基于官方的 redis cluster 的方案。

1.codis 架构

codis是一个豌豆荚团队开源的使用Go语言编写的Redis
Proxy使用方法和普通的redis没有任何区别,设置好下属的多个redis实例后就可以了,使用时在本需要连接redis的地方改为连接codis,它会以一个代理的身份接收请求
并使用一致性hash算法,将请求转接到具体redis,将结果再返回codis,和之前比较流行的twitter开源的Twemproxy功能类似。

这套架构的特点:

  • 分片算法:基于 slot hash桶;
  • 分片实例之间相互独立,每组 一个master 实例和多个slave;
  • 路由信息存放到第三方存储组件,如 zookeeper 或etcd
  • 旁路组件探活

codis是目前用的最多的集群方案,codis一个比较大的优点是可以不停机动态新增或删除数据节点,旧节点的数据也可以自动恢复到新节点。

2.基于官方 redis cluster 的方案

  • Redis官网推出,可线性扩展到1000个节点
  • 无中心架构
  • 一致性哈希思想
  • 客户端直连redis服务,免去了proxy代理的损耗

具体的redis cluster的搭建方案可以参考官方的搭建方案。

redis的应用场景

1、最全页面缓存

如果你使用的是服务器端内容渲染,你又不想为每个请求重新渲染每个页面,就可以使用 Redis 把常被请求的内容缓存起来,能够大大的降低页面请求的延迟。

2.排行榜/计数

Redis 基于内存,可以非常快速高效的处理增加和减少的操作,相比于使用 SQL 请求的处理方式,性能的提升是非常巨大的。

Redis可以实现快速计数、查询缓存的功能,同时数据可以异步落地到其他数据源。

典型应用场景:

1)播放数计数的基础组件,用户每播放一次视频,相应的视频播放数就会自增1。

2)排行榜:按照时间、按照数量、按照获得的赞数等排行。

3. 共享Session

典型应用场景:用户登陆信息,Redis将用户的Session进行集中管理,每次用户更新或查询登陆信息都直接从Redis中集中获取。

4、消息队列

例如 email 的发送队列、等待被其他应用消费的数据队列,Redis 可以轻松而自然的创建出一个高效的队列。

5、发布/订阅

pub/sub 是 Redis 内置的一个非常强大的特性,例如可以创建一个实时的聊天系统、社交网络中的通知触发器等等。

你可能也喜欢:

  1. Redis系列教程(一):Redis缓存的设计、性能、应用与数据集群同步
  2. Redis系列教程(七):Redis并发竞争key的解决方案详解
  3. Redis系列教程(三):如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
  4. Redis系列教程(五):Redis哨兵、复制、集群的设计原理,以及区别
  5. Redis系列教程(八):分布式锁的由来、及Redis分布式锁的实现详解
  6. Redis系列教程(九):Redis的内存回收原理,及内存过期淘汰策略详解

Redis系列教程(二):详解Redis的存储类型、集群架构、以及应用场景相关推荐

  1. Redis数据库教程——系统详解学习Redis全过程

    Redis数据库教程--系统详解学习Redis全过程 Redis快速入门:Key-Value存储系统简介 Key-Value存储系统:     Key-Value Store是当下比较流行的话题,尤其 ...

  2. redis系列之——高可用(主从、哨兵、集群)

    Redis系列目录 redis系列之--分布式锁 redis系列之--缓存穿透.缓存击穿.缓存雪崩 redis系列之--Redis为什么这么快? redis系列之--数据持久化(RDB和AOF) re ...

  3. 详解Javascript本地存储的方式、区别及应用场景

    详解Javascript本地存储的方式.区别及应用场景 一.方式 javaScript本地缓存的方法我们主要讲述以下四种: cookie sessionStorage localStorage ind ...

  4. Redis详解(十五)------ 集群模式详解

    1.为什么需要集群? ①.并发量 通常来说,单台Redis能够执行10万/秒的命令,这个并发基本上能够满足我们所有需求了,但有时候比如做离线计算,为了更快的得出结果,有时候我们希望超过这个并发,那这个 ...

  5. HUE配置文件hue.ini 的zookeeper模块详解(图文详解)(分HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  6. HUE配置文件hue.ini 的hbase模块详解(图文详解)(分HA集群和非HA集群)

    不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...

  7. HUE配置文件hue.ini 的database模块详解(包含qlite、mysql、 psql、和oracle)(图文详解)(分HA集群和非HA集群)...

    不多说,直接上干货! Hue配置文件里,提及到,提供有postgresql_psycopg2, mysql, sqlite3 or oracle. 注意:Hue本身用到的是sqlite3. 在哪里呢, ...

  8. MongoDB详解(三)——MongoDB集群

    今天继续给大家介绍Linux运维相关知识,本文主要内容是MongoDB集群. 一.MongoDB集群组成 MongoDB集群,由以下三种服务组成. (一)路由服务 MongoDB的路由服务示意图如下所 ...

  9. redis实战教程_Redis详解新手教程_Redis入门到精通

    redis实战教程由一线互联网公司技术大牛亲自打造,结合真实项目实战演练,小白也能轻松入门,胜任企业岗位需求,薪资8K起!redis学习和使用,11年架构师指导学习,让你少走弯路,轻松学会! redi ...

最新文章

  1. sql server 2008学习10 存储过程
  2. C#中switch语句注意
  3. no module named sklearn
  4. 高等数学:第六章 定积分的应用(2)平面曲线的弧长 做功 水压力 引力
  5. 05_学生管理系统,xml读写,布局的综合应用
  6. oracle11gasm,Oracle11gASM之ACFS创建案例
  7. C#LeetCode刷题之#599-两个列表的最小索引总和​​​​​​​​​​​​​​(Minimum Index Sum of Two Lists)
  8. Web 服务器远程控制硬件(Arduino)
  9. 持续集成部署Jenkins工作笔记0020---20.在GitHub上创建WebHook
  10. 3元购买微信小程序解决方案一个月
  11. Servlet 环境设置
  12. Vue+Webpack常见问题(持续更新)
  13. 表格票据识别-助力各行业单据录入
  14. oppo手机解锁_OPPO手机忘记解锁密码怎么办 解锁手机密码
  15. 转帖自勉:一个猎头的自述
  16. DX11 游戏开发笔记 (二) DX11 基础框架 上
  17. 云音乐vue开发日记
  18. FAQ04【ElastiSearch】报错:org.elasticsearch.discovery.MasterNotDiscoveredException异常解决
  19. 【BZOJ4094】 【Usaco2013 Dec】Optimal Milking(权限题)
  20. 10月3日 c语言 输入4*5矩阵

热门文章

  1. PHP上传文件大小限制的问题(转)
  2. 1057: [ZJOI2007]棋盘制作 - BZOJ
  3. 《C语言程序设计》第三章练习与习题答案
  4. iphone静态库的加载和调试
  5. android 音频加载hal so调试
  6. printf 宏 调试技巧
  7. 网校系统推荐eduline_网校系统的各项功能的用处
  8. C语言实现x的n次方
  9. saltstack php,Saltstack快速入门简单汇总
  10. 怎么撤回操作_微信又更新,拍一拍能撤回了