【Redis入门】浅论Redis的基本知识及其应用场景

119 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

最近跟着B站视频看完了redis的入门,对于redis的纯理论知识有了进一步的了解,欢迎大家跟着我一起学习redis的相关知识。

基本知识

我们先看看官方定义,Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的API,广泛用作数据库、缓存、流式处理引擎和消息代理的开源内存中数据存储。学习redis,我们需要先了解NoSql的概念。

Nosql

NoSQL(NoSQL = Not Only SQL ),指的是“不仅仅是SQL”,泛指非关系型的数据库。与传统的Mysql关系型数据库不同, NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力,redis作为消息中间件,拥有着远超于MySQL等传统关系型数据库的性能。

认识Reids

  1. Redis 是一个开源(BSD 许可)内存中数据结构存储,用作数据库、缓存、消息代理和流式处理引擎。
  2. Redis 提供多样的数据结构,如字符串、哈希、列表、集、地理空间索引和流等。Redis 具有内置的复制、Lua 脚本(常用其实现操作的原子性)、LRU 逐出、事务和不同级别的磁盘持久性(RDB快照和AOF 日志)
  3. Redis可以对数据类型运行原子操作,例如追加到字符串;在哈希中增加值;将元素推送到列表;计算集合交集,并集和差分;或获取排序集中排名最高的成员。
  4. Redis为了实现最佳性能,Redis 使用内存中数据集。Redis可以通过定期将数据集转储到磁盘或将每个命令附加到基于磁盘的日志来保留数据。
  5. Redis 支持异步复制,具有快速无阻塞同步和自动重新连接功能,并在网络拆分时进行部分重新同步。
  6. 支持高并发场景,可以通过 Redis 哨兵和 Redis 集群的自动分区提供高可用性,实现主从同步。

适用场景

  • 特别适合需要高并发的读写数据,如秒杀业务
  • 提升海量数据的读写能力,比如可以存放一些经常需要用到的信息
  • 对数据高可扩展性的
  • 特定的场景,如地理信息的操作
  • 一些简单消息队列,除了Redis自身的SUB/PUB模式,我们也可以利用List来实现一个队列机制,比如:通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的DB压力,完全可以用List来完成异步解耦;
  • 存放一些容易过时的数据,通过设定数据的过期时间,实现数据的有效存储

不适用场景

  • 需要事务支持
  • 需要处理多表之间的操作,用sql结构的语句进行操作
  • 数据量太大、数据访问频率非常低的数据(因为redis基于内存,会带来大量的内存消耗)

用途

  • 排行榜,如果使用传统的关系型数据库实现起来非常的麻烦,使用Redis的SortSet数据结构实现排行榜功能
  • 利用集合的一些命令,比如求交集、并集、差集等。如可以实现一些共同好友的功能
  • 存储地理信息,进行判断,如判断两点之间的距离,是否在中心点有效范围内。

总结

我们可以将Redis用作关系型数据库的有效补充,可以先访问Redis,查询失败再去访问Mysql数据库进行redis的更新,提升数据的读写能力。