一、Redis是什么

* 开源

* 基于键值的存储服务系统

* 支持多种数据结构

* 高性能,功能丰富

二、Redis特性

♦️ 概述

* 速度快

* 支持持久化

* 支持多种数据结构

* 支持多种编辑语言

* 功能丰富

* 简单(代码短小精悍,使用简单)

* 主从复制

* 高可用、分布式(主从复制是实现此的基础)

♦️ 特性详解

2.1 速度快

官方数据  10W OPS(operation per second)

为什么这么快?

1)绝大部分请求是纯粹的内存操作(非常快速)
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属性和社交网络很匹配粉丝数、关注数

♦️ 实时系统

垃圾邮件处理系统、消息队列缓冲系统

 
 

Redis入门到高可用(一)——初识Redis的更多相关文章

  1. Redis入门到高可用(十九)——Redis Sentinel

    一.Redis  Sentinel架构     二.redis sentinel安装与配置 四.客户端连接Sentinel            四.实现原理—— 故障转移演练(客户端高可用) 五.实 ...

  2. Redis入门到高可用(十八)—— 主从复制

    一.单机有什么问题 1.机器故障 2.容量瓶颈 3.QPS瓶颈 二.主从复制 1.数据副本(高可用.分布式基础) 2.拓展读性能(读写分离)  简单总结: 三.主从复制配置 四.主从复制配置-实验演示 ...

  3. Redis入门到高可用(十一)—— 慢查询

    一.慢查询日志 慢查询日志帮助开发和运维人员定位系统存在的慢操作.慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(慢查询ID,发生时间戳,耗时,命令的详 ...

  4. Redis入门到高可用(十六)—— 持久化

    一.持久化概念 二.持久化方式 三.redis持久化方式之——RDB 1.什么是RDB 在 Redis 运行时, RDB 程序将当前内存中的数据库快照保存到磁盘文件中, 在 Redis 重启动时, R ...

  5. Redis入门到高可用(十)—— Spring与Redis的整合

    1.pom文件 <!--redis--> <dependency> <groupId>org.springframework.data</groupId> ...

  6. Redis入门到高可用(三)——通用命令

    通用命令  参考 http://redisdoc.com/index.html 1. keys  #查看所有key 时间复杂度:O(N), N 为数据库中 key 的数量. 127.0.0.1:637 ...

  7. Redis入门到高可用(九)——无序set

    一.结构 特点:无序,无重复,支持集合间操作 二.主要API smembers : 无序:(会阻塞)小心使用,可用sscan代替 spop: 从集合中弹出元素,每次只能弹出一个: 三.实战 抽奖系统 ...

  8. Redis入门到高可用(二十)——Redis Cluster

    一.呼唤集群 二.数据分布概论      三.哈希分布 1.节点取余 2.一致性哈希 添加一个node5节点时,只影响n1和n2之间的数据   3.虚拟槽分区 四.基本架构 五.redis clust ...

  9. Redis入门到高可用(十三)—— 发布订阅

    一.模型 二.主要API 1.publish(发布命令) 2.subcribe(订阅) 3.取消订阅(unsubcribe) 4.其他API 三.消息队列功能 redis实现消息队列功能 应用场景:抢 ...

随机推荐

  1. 为何谷歌围棋AI AlphaGo可能会把李世石击溃

    /* 版权声明:可以随意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 谷歌DeepMind开发的人工智能围棋程序AlphaGo以5:0的压倒性优势击败了欧洲围棋冠军.专业二 ...

  2. Nuxt.js项目实战

    感悟 经过几个周六周日的尝试,终于解决了服务端渲染中的常见问题,当SEO不在是问题的时候,或许才是我们搞前端的真正的春天,其中也遇到了一些小坑,Nuxt.js官方还是很给力的,提issue后很积极的给 ...

  3. POST 发送HTTP请求入参为:String url, Map<String, Object> propsMap

    /** * 发送HTTP请求 * * @param url * @param propsMap * 发送的参数 */ public static String httpSend(String url, ...

  4. C++/MFC-线程优先级

    转载: https://blog.csdn.net/qwdpoiguw/article/details/72830426 一.线程优先级(Thread priority ) 简单的说就是(线程)的优先 ...

  5. 10.17正式开发stark项目(二)

    2018-10-17 11:09:48 orm补充参考连接: https://www.cnblogs.com/yuanchenqi/articles/8963244.html model 进阶 参考连 ...

  6. python爬取并批量下载图片

    import requests from lxml import etree url='http://desk.zol.com.cn/meinv/' add1='.html' urls=[] i = ...

  7. 转:关于ROWNUM的使用

    转载自:原文:https://blog.csdn.net/songsenkeji/article/details/4432942 ROWNUM的概念ROWNUM是一个虚假的列.它将被分配为 1,2,3 ...

  8. robot framework教程-------虫师

    http://www.testclass.net/2017/09/28/happy-holidays/

  9. jdbc--------JdbcUtilDao 类

    2018-12-14 目标:做成一个比较通用的 sql 操作 import com.ljs.util.JDBCUtil; 类名:JdbcUtilDao 1: 更新操作, 针对任何表,增加,删除,更新操 ...

  10. git修改提交的用户名

    场景分析 试想一下这样的场景,你先在自己的电脑上上创建了一个项目,并且把他添加到了git仓库,然后提交到了Github.但是,下一次,你在公司的电脑上clone了这个项目,并且修改了文件,当你提交到G ...