Redis篇二:特性介绍及应用场景

1. 特性

1.1 速度快

  正常情况下,Redis 执行命令的速度非常快,官方给出的数字是读写性能可以达到 10 万 / 秒,当然这也取决于机器的性能,但这里先不讨论机器性能上的差异,只分析⼀下是什么造就了 Redis 如此之快,可以大概归纳为以下四点:

  • Redis 的所有数据都是存放在内存中的,把数据放在内存中是 Redis 速度快的最主要原因。
  • Redis 是用 C 语⾔实现的,⼀般来说 C 语⾔实现的程序 “距离” 操作系统更近,执行速度相对会更快。
  • Redis 使用了单线程,预防了多线程可能产⽣的竞争问题。
      Redis 在 6.0 版本引⼊了多线程机制,但主要也是在处理网络和 IO(多路复用,epoll),不涉及到数据命令,即命令的执行仍然采用了单线程模式。
  • Redis的核心功能都是比较简单的逻辑,都是一些比较简单的操作内存中的数据结构的功能。

1.2 基于键值对的方式存储组织数据

  几乎所有的编程语⾔都提供了类似字典的功能,例如 C++ 里的 map、Java 里的 map、Python 里的 dict 等,类似于这种组织数据的方式叫做基于键值对的方式,与很多键值对数据库不同的是,Redis 中的值不仅可以是字符串,而且还可以是具体的数据结构,这样不仅能便于在许多应用场景的开发,同时也能提⾼开发效率。
  在Redis,key都是string,value可以是字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(ordered set /zet)等数据结构。
  MySQL是通过表的方式来存储组织数据的,这种叫做关系型数据库,Redis是通过键值对的方式来存储组织数据的,这种叫做非关系行数据库。

1.3 Programmability(可编程的)

  在操作方面,Redis支持可以通过简单的交互式命令进行操作,也可以通过一些脚本(Lua)的方式批量执行一些操作。

1.4 Extensibility(可扩展的)

  可以在Redis原有的基础功能之上进行扩展,Redsi提供了一批API接口,可以通过(C/C++、Rust)来对Redis进行扩展(本质上就是一个动态链接库)。比如可以让Redis支持更多的数据结构或者命令。

1.5 Persistence(持久化)

  我们现在已经知道Redis是在内存种存放数据的,但是我们又知道内存的数据式易失的,比如进程退出、系统重启都会造成内存中的数据丢失,因此Redis也是支持持久化的。也就是内存中有一份数据,硬盘上也有一份数据,以内存为主,硬盘为辅的方式存储组织数据的。相当于就是用硬盘对数据进行一下备份,当遇突发情况时,可以恢复数据。

1.6 Clustering(集群)

  集群也就是支持水平扩展,类似于 “分库分表”。一个Redis能存储的数据是有限的,当遇到上限时,就需要引入多个主机,部署多个Redis节点,每个Redis存储数据的一部分。

1.7 High availablity(高可用)

  高可用的意思就是冗余/备份。Redis自身也是支持主从结构的,从节点就相当于主节点的备份,当主节点挂掉之后,从节点就会代替主节点进行工作,不至于服务直接挂掉。

2. 应用场景

2.1 Real-time data store(事实的数据存储)

  也就是把Redis当成一个数据库,当需要一个更低的延迟和一个更高的吞吐率时的实时存储时,就可以考虑使用Redis。在大多数情况下,我们平时优先考虑的是 “大”,但有时候可能会考虑 “快”,比如搜索引擎,大概率就是需要用Redis来存储数据。

2.2 Caching(缓存)

  见初始Redis,其中有关于缓存的讲解。

2.3 Streaming & messaging

  消息队列系统可以说是⼀个⼤型网站的必备基础组件,因为其具有业务解耦、⾮实时业务削峰等特性。Redis 提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列比还不够⾜够强⼤,但是对于⼀般的消息队列功能基本可以满足。

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不如小布.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值