文章目录

  • Redis介绍
  • Redis是什么,有什么特点
  • Redis可以解决的问题
  • Redis技术点get

Redis介绍

为了更好的了解Redis,我们不妨从以下几点来分析Redis:

  • Redis是什么,有什么特点
  • 我们使用Redis是为了解决什么样的问题
  • Redis有哪些特别棒的技术,这些技术又为了解决实际工作中的哪些问题
  • 了解Redis,我们怎么去使用Redis,需要get哪些知识技能点
  • 运用Redis来搭建高可用的环境

Redis是什么,有什么特点

官方的解释:Redis是使用C语言编写,支持网络、内存,亦可持久化的日志型、key-value数据库;

首先明确一点,Redis是一个数据库,不同于我们熟悉的关系型数据:Oracle和Mysql等;
Redis是基于内存的key-value数据库。Redis跟Memcached比较像,不同的是Redis的value支持多种数据结构类型。

Redis有如下一些很棒的优点

  • Redis支持多种数据类型:String, hash, list, set以及zset(sorted set),这些数据类型能让我们很好的定义不同数据类型来满足我们的业务的需要。
  • Redis数据库支持事务,所有的操作都是原子性的
  • 内存数据库,速度非常快,使用目前流行的SSD硬盘,性能得到更优
  • 支持将内存中的数据库持久化硬盘上,并且支持在启动的时候恢复数据
  • Redis支持主从架构(复制)
  • Redis可以配置高可用缓存架构(主备切换)
  • Redis可以搭建分布式集群架构,支持海量数据
  • Redis支持横向扩容

Redis可以解决的问题

正如以上所述,redis有如此多的优点,那么我们可以使用redis来解决我们什么样的问题呢?

下面我们来模拟一个业务场景:

现实生活中,秒杀类的场景大家都是比较熟悉的,往往电商官方推出一款产品,然后在某一个特定的时间点向广大的消费者开发订购功能,那么在那个特定的时间点,可能系统平台一下子就达到10W+的QPS访问量,10w+的QPS,如果直接指向数据库,数据库很容易崩溃,导致整个系统崩溃。

对于以上的业务场景,Redis就派上大用场了,一个很简单的思路,我们可以将商品的相关的信息初始化到redis中,当用户访问的时候,可以直接从Redis中获取数据返回给用户,这样的话,mysql的访问量就一下子降低了很多,同时用户的访问速度也会得到很大的提升。

有的同学看到这里就会有个疑问,如果将数据缓存到redis中,那如果这边发生一笔交易,库存量应该是减少1,但是在高并发的情况下,redis中的数据就不会得到及时更新,就会出现多买的情况。

当然会出现上述的问题,不过这个又是另一个场景了,我们也可以使用redis来充当分布式锁,通过程序的控制来是实现业务上的锁来控制秒杀时的库存数量问题,同时又可以更新redis缓存中的数据。

以上是redis的一个应用场景,单机的Redis简单的配置(主从同步:master+slave)其中master进行写业务,slave进行读业务,一般的使用场景中,写的业务相对较少,读的业务相对较多,对于一个简单的redis配置而言,一般写的QPS大概是2w左右,而读的QPS大概是5w左右,主要受限于CPU+内存。当然slave节点可以进行横向扩展,进一步的扩大读的QPS访问量。

当然,Redis的实际应用场景是很多的,但是总的来说大部分的应用场景的眼里都是将数据保存在redis中,然后利用Redis的高性能来实现业务场景的高可用、高并发等业务问题。由此可见,将复杂的高并发和高可用业务模型简单化,Redis堪称一代神器了。

Redis技术点get

上面介绍了Redis的一些优点,下面我们具体讲解下Redis的一些很棒的技术:

  • 多数据类型:相比Memcached而言,Redis支持多种数据结构,这些数据结构可以很方便的优化我们实际工作中的业务模型;

    Redis提供的list和set,这使得Redis能作为一个很好的消息队列平台来使用。

    Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。

    Redis拥有发布/订阅的功能,这个功能可以搭建聊天系统(目前已经有实现的系统)

  • 持久化:Redis的持久化有两种:RDB和AOF,两种持久化方式各有各的优点:

    RDB:是Redis默认的持久化方案,可以通过配置时间间隔来将内存中数据以快照的方式写入到二进制文件中,在指定的目录下生成dump.rdb文件,Redis在重启时会加载dump.rdb数据,这样就实现redis数据库重启时可以恢复数据。当然由于存在一点的时间间隔,如果redis重启的话会丢失一部分数据,这时,我们可以结合第二种方式来备份数据:AOF

    AOF:Redis默认不开启,采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作,AOF方式可以设置fsync策略,一般是每秒一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)

  • replication(主从复制+读写分离):就是主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主,一个Master可以有多个Slave节点,从而实现主数据的同步和备份。Redis的读写分离,可以高效率的保持主从数据同步,同时还支持高并发,可以通过增加Slave节点来增加读QPS的访问量。
  • 哨兵:哨兵以独立的进程监控多台Redis服务器是否能正常运行,并且能在主Master节点宕机后,通过算法选出Slave节点来担任Master的节点,继续向外部提供服务,不影响系统的正常运行。
  • Redis Cluster: Redis官方提供的Redis集群搭建的方案,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。并且支持主从切换,当一个redis节点挂了可以快速的切换到另一个节点。当遇到单机内存、并发等瓶颈时,可以采用分布式方案要解决问题。

系列文章请看我的个人博客

Redis教程——Redis特点和技术介绍相关推荐

  1. Redis教程--redis分布式锁+企业解决方案+redis实战

    Redis,目前全国甚至是全球最常用的缓存中间件之一,在现在公司的开发中,可以说是离不开Redis. 在企业越来越注重用户体验的今天,Redis因具有高性能.高响应的特性,大大提升应用的响应速度和用户 ...

  2. Unity+Vuforia SDKAR开发系列教程--1.1 AR技术介绍

    1.1 AR技术介绍 提起AR技术,相信真正了解它的人还不多,或者是大多数的人都会第一时间把这种技术和各种各样的智能穿戴设备例如谷歌眼镜.智能手表等联系起来.其实,AR应用的领域是非常广的,并不仅仅局 ...

  3. Redis 教程+redis微博设计处理(内涵笔记和源码)

    下载地址:百度网盘下载 转载于:https://www.cnblogs.com/sydneye/p/9763180.html

  4. win10本地安装redis教程

    win10本地安装redis教程 Redis 是一个数据结构服务器,因为值(value)可以是 字符串(String),哈希(Hash),列表(list),集合(sets) 和 有序集合(sorted ...

  5. Redis 教程基于win10:1介绍

    目录 文章目录 目录 Redis简介 谁适合阅读本教程? 阅读本教程前,您需要了解的知识? Redis 优势 Redis与其他key-value存储有什么不同? 相关资源 Redis简介 Remote ...

  6. Redis教程:NoSQL键值存储

    课程大纲 Redis是使用ANSI C编写的具有可选持久性的开源,网络化,内存中键值数据存储.根据DB-Engines.com的月度排名,Redis是最受欢迎的键值存储. 它的名字意思是远程字典服务器 ...

  7. 4W字的Redis教程!!!!!!

    本文脑图 redis基本数据结构 本文脑图 前言 Redis是基于c语言编写的开源非关系型内存数据库,可以用作数据库.缓存.消息中间件,这么优秀的东西客定要一点一点的吃透它. 这是关于Redis五种数 ...

  8. 人生最好的php,mysql,linux,redis,docker等相关技术经典面试题,新手收藏学习,持续更新中。。。

    php面试题 1.写出你能想到的所有HTTP返回状态值,并说明用途(比如:返回404表示找不到页面) # 200:服务器请求成功 # 301:永久重定向,旧网页已被新网页永久替代 # 302:表示临时 ...

  9. 超详细Redis入门教程——Redis命令(下)

    前言 本文小新为大家带来 超详细Redis入门教程--Redis命令 相关知识,具体内容包括简单动态字符串 SDS,集合的底层实现原理,BitMap 操作命令,HyperLogLog 操作命令,Geo ...

最新文章

  1. 关于工程教育和工程教育专业认证工作的思考——吴岩司长在工程教育高峰论坛上的讲话
  2. 不怕面试再问 Activity,一次彻底地梳理(原理+生命周期)
  3. 19 删除链表的倒数第N个
  4. VMWare虚拟机NAT模式静态IP联网配置
  5. BugkuCTF-MISC题FileStoragedat
  6. 原始套接字与抓包过滤规则setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, ...)
  7. GDAL源码剖析(二)之编译说明
  8. phabricator安装配置和使用(docker安装和独立部署)
  9. Raspberry install wine
  10. python——学习登录用户和密码的判断——1
  11. 语音转写(讯飞开放平台)工具类
  12. MATLAB中绘制椭圆
  13. win7家庭版和旗舰版区别_Windows系统的家庭版、专业版、旗舰版,都有什么区别?...
  14. 网站服务器对域名有要求,网站域名备案对服务器的要求
  15. easyUI1.7学习第一天_menu表单
  16. 如何更换计算机cpu风扇,cpu风扇怎么拆下来 cpu风扇正确拆卸方法图解
  17. 插画版Kubernetes指南(小孩子也能看懂的kubernetes教程)
  18. python编程猜数字小游戏(简单)
  19. Qmail的配置文件详解
  20. 如何生成config.guess config.sub 文件

热门文章

  1. Unity中游戏多种武器旋转方式
  2. F12开发人员工具如何使用、抓包、调试代码
  3. Python编程--使用NMAP端口扫描
  4. 互联网+农业的五大流派及未来方向
  5. IDEF1X建模工具
  6. 1.4.2 AS-External-LSA
  7. Checkstyle介绍
  8. GitLab + Jenkins + Sonar Qube 持续集成
  9. 微软CRM 开发学习笔记 使用c#编写插件(plugin)的方式实现页面执行操作
  10. 循环while和for语句