Redis入门到高可用(一)——初识Redis
一、Redis是什么
* 开源
* 基于键值的存储服务系统
* 支持多种数据结构
* 高性能,功能丰富
二、Redis特性
♦️ 概述
* 速度快
* 支持持久化
* 支持多种数据结构
* 支持多种编辑语言
* 功能丰富
* 简单(代码短小精悍,使用简单)
* 主从复制
* 高可用、分布式(主从复制是实现此的基础)
♦️ 特性详解
2.1 速度快
官方数据 10W OPS(operation per second)
为什么这么快?
1)绝大部分请求是纯粹的内存操作(非常快速)
2)采用单线程,避免了不必要的上下文切换和竞争条件
3)非阻塞IO
内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间
2)采用单线程,避免了不必要的上下文切换和竞争条件
3)非阻塞IO
内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间
2.2 持久化
Redis所有数据保持在内存中,对数据的更新将异步地保存在磁盘上。
2.3 多种数据结构
Redis支持五种数据类型:string(字符串),hash Map(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
其他衍生 :
BitMaps :位图
HyperLogLog : 超小内存唯一值计数
GEO :地理信息定位
2.4 支持多种客户端语言
Java、 PHP、python、Ruby、Lua、nodeJS等
2.5 功能丰富
* 发布订阅
* 事务
* Lua脚本
* pipeline
2.6 简单
* 代码量小
* 不依赖外部库
* 单线程模型
2.7 主从复制
redis中的(master/slave)主从复制,主机数据更新后根据配置和策略自动同步到备机的master/slaver机制,master以写为主,slaver以读为主。
作用:读写分离、容灾恢复
2.8 高可用、分布式
高可用 → v2.8版本(Redis-Sentinel)支持高可用
分布式 → v3.0版本(Redis-Cluster)支持分布式
三、使用场景
♦️ 缓存系统
♦️ 计数器
微博的转发数、评论数等;
业务需求中经常有需要用到计数器的场景:譬如一个手机号一天限制发送5条短信、一个接口一分钟限制多少请求、一个接口一天限制调用多少次等等。使用Redis的Incr自增命令可以轻松实现以上需求 参考 https://blog.csdn.net/qq_33556185/article/details/79427271
♦️ 消息队列系统
简单消息队列功能
https://blog.csdn.net/u010012299/article/details/72852370
♦️ 排行榜
音乐、视频、游戏、若干纬度排行榜等
♦️ 社交网络
Redis属性和社交网络很匹配粉丝数、关注数
♦️ 实时系统
垃圾邮件处理系统、消息队列缓冲系统