Redis系列教程(二):详解Redis的存储类型、集群架构、以及应用场景
高并发架构系列
高并发架构系列:数据库主从同步的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 内置的一个非常强大的特性,例如可以创建一个实时的聊天系统、社交网络中的通知触发器等等。
你可能也喜欢:
- Redis系列教程(一):Redis缓存的设计、性能、应用与数据集群同步
- Redis系列教程(七):Redis并发竞争key的解决方案详解
- Redis系列教程(三):如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
- Redis系列教程(五):Redis哨兵、复制、集群的设计原理,以及区别
- Redis系列教程(八):分布式锁的由来、及Redis分布式锁的实现详解
- Redis系列教程(九):Redis的内存回收原理,及内存过期淘汰策略详解
Redis系列教程(二):详解Redis的存储类型、集群架构、以及应用场景相关推荐
- Redis数据库教程——系统详解学习Redis全过程
Redis数据库教程--系统详解学习Redis全过程 Redis快速入门:Key-Value存储系统简介 Key-Value存储系统: Key-Value Store是当下比较流行的话题,尤其 ...
- redis系列之——高可用(主从、哨兵、集群)
Redis系列目录 redis系列之--分布式锁 redis系列之--缓存穿透.缓存击穿.缓存雪崩 redis系列之--Redis为什么这么快? redis系列之--数据持久化(RDB和AOF) re ...
- 详解Javascript本地存储的方式、区别及应用场景
详解Javascript本地存储的方式.区别及应用场景 一.方式 javaScript本地缓存的方法我们主要讲述以下四种: cookie sessionStorage localStorage ind ...
- Redis详解(十五)------ 集群模式详解
1.为什么需要集群? ①.并发量 通常来说,单台Redis能够执行10万/秒的命令,这个并发基本上能够满足我们所有需求了,但有时候比如做离线计算,为了更快的得出结果,有时候我们希望超过这个并发,那这个 ...
- HUE配置文件hue.ini 的zookeeper模块详解(图文详解)(分HA集群)
不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...
- HUE配置文件hue.ini 的hbase模块详解(图文详解)(分HA集群和非HA集群)
不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...
- HUE配置文件hue.ini 的database模块详解(包含qlite、mysql、 psql、和oracle)(图文详解)(分HA集群和非HA集群)...
不多说,直接上干货! Hue配置文件里,提及到,提供有postgresql_psycopg2, mysql, sqlite3 or oracle. 注意:Hue本身用到的是sqlite3. 在哪里呢, ...
- MongoDB详解(三)——MongoDB集群
今天继续给大家介绍Linux运维相关知识,本文主要内容是MongoDB集群. 一.MongoDB集群组成 MongoDB集群,由以下三种服务组成. (一)路由服务 MongoDB的路由服务示意图如下所 ...
- redis实战教程_Redis详解新手教程_Redis入门到精通
redis实战教程由一线互联网公司技术大牛亲自打造,结合真实项目实战演练,小白也能轻松入门,胜任企业岗位需求,薪资8K起!redis学习和使用,11年架构师指导学习,让你少走弯路,轻松学会! redi ...
最新文章
- sql server 2008学习10 存储过程
- C#中switch语句注意
- no module named sklearn
- 高等数学:第六章 定积分的应用(2)平面曲线的弧长 做功 水压力 引力
- 05_学生管理系统,xml读写,布局的综合应用
- oracle11gasm,Oracle11gASM之ACFS创建案例
- C#LeetCode刷题之#599-两个列表的最小索引总和​​​​​​​​​​​​​​(Minimum Index Sum of Two Lists)
- Web 服务器远程控制硬件(Arduino)
- 持续集成部署Jenkins工作笔记0020---20.在GitHub上创建WebHook
- 3元购买微信小程序解决方案一个月
- Servlet 环境设置
- Vue+Webpack常见问题(持续更新)
- 表格票据识别-助力各行业单据录入
- oppo手机解锁_OPPO手机忘记解锁密码怎么办 解锁手机密码
- 转帖自勉:一个猎头的自述
- DX11 游戏开发笔记 (二) DX11 基础框架 上
- 云音乐vue开发日记
- FAQ04【ElastiSearch】报错:org.elasticsearch.discovery.MasterNotDiscoveredException异常解决
- 【BZOJ4094】 【Usaco2013 Dec】Optimal Milking(权限题)
- 10月3日 c语言 输入4*5矩阵