Redis是什么、使用场景、五大基本数据结构

文章目录

Redis是什么、使用场景

Redis是一种开源的高性能键值数据库,也是常说的 NOSQL 它通常被用来作为内存中的数据结构存储,支持多种类型的数据结构,如字符串(Strings)、哈希表(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)以及位图(Bitmaps)、Redis FEO等等。

因为 Redis 是将数据存储在内存中的,而 MySQL 数据库是将数据存储在磁盘中,所以 Redis 的性能 QPS(每秒处理请求时间)是MySQL 的十倍。

由于其高速的读写能力,Redis通常用于以下场景:

  1. 缓存(Caching):Redis是一个高性能的内存数据存储系统,经常被用作缓存解决方案,可以显著减少后端数据库的读取压力,提高应用的响应速度。

  2. 会话存储(Session Store):Redis可以用来存储用户会话信息,比如存储 Session 实现登录态的存储。

  3. 消息队列(Message Broker):Redis的发布/订阅(pub/sub)模式和列表(Lists)数据结构使其可以作为消息队列系统使用,进行消息的发送和异步处理。

  4. 实时分析:例如,用有序集合(Sorted Sets)来存储排行榜数据

  5. 地理空间数据存储:Redis GEO 具备地理空间数据支持,可以用来构建地理位置服务。

  6. 持久化存储:虽然Redis是基于内存的,但它支持持久化功能,可以将内存中的数据保存到磁盘中,保证数据的持久性。

  7. 分布式锁:Redis 可以提供分布式锁的机制,保证分布式系统中进程与线程之间的同步、常见的分布式锁有 Redisson。

由于Redis的这些特性,它被广泛应用在小到个人项目,大到企业级应用中,帮助提升系统性能,提供更加快速的数据访问体验。

redis的常见的五个数据类型

redis的常见的五个数据类型:String,Lists,sets,sorted sets,hashes。

  1. String(字符串)

    • String是Redis中最基本的数据类型,一个 key 对应一个 value,value 可以是字符串

    常用场景: 缓存用户个人信息或者存储临时性的信息,比如验证码,登录 session。

  2. Lists(列表)

    • Lists是简单的字符串列表,按插入顺序排序,你可以添加一个元素到头部(左边)或者尾部(右边)。

    常用场景:实现最新消息排行等功能(将最新的内容推入列表)。任务队列,如消息队列(先进先出)。

  3. Sets(集合)

    • Sets是字符串的无序集合。它是通过HashTable实现的,所以添加、删除、查找的复杂度都是O(1)。

    常用场景:计算点赞数、共同关注等等,因为集合可以快速地进行交集、并集、差集等操作。

  4. Sorted Sets(有序集合)

    • Sorted Sets是将 Set 中的元素增加一个权重参数 score,使集合中的元素能够按 score 进行有序排列。score 跟元素本身就类似与key、Value 的状态。

    常用场景: 排行榜应用,如游戏排行榜。

  5. Hashes(哈希)

    • Hashes是键值对集合,是一个string类型的field和value的映射表,适合存储对象
  6. 常用场景:存储对象数据,如用户信息、配置信息等。还有购物车应用,其中field是商品ID,value是商品信息。

总结

这些数据类型各有特点,可以根据不同的应用场景选择适合的数据结构。例如,如果需要简单的存储临时的数据,可以使用 String 。如果需要保持元素的插入顺序,则选择List类型;如果需要唯一元素且不需要排序,就选择Set类型;如果需要全局排序,可以选择 Sorted Set类型;而如果需要存储对象,则Hash类型可能是更合适的选择。在实际应用中,这些数据类型往往可以相互结合,为复杂的应用场景提供强大的数据支持。


有启发点个赞 🌹

预计下篇分享:Redis 线程模型或 Redis 持久化

本篇参考:小林coding ,JavaGuide

我是小辉,正在进行 Java 实习的 24 届应届毕业生。欢迎关注,持续分享,包括但不限于技术文章。全网同名...

相关推荐
凌虚(失业了求个工作)几秒前
RAG 示例:使用 langchain、Redis、llama.cpp 构建一个 kubernetes 知识库问答
人工智能·redis·python·langchain·llama
莳花微语3 分钟前
oracle如何配置第二个监听优化数据传输
数据库·oracle·php
小码的头发丝、5 分钟前
Maven的安装与配置
java·数据库·maven
nuo5342028 分钟前
The 2024 ICPC Kunming Invitational Contest
c语言·数据结构·c++·算法
0zxm9 分钟前
01.Django快速入门
数据库·vscode·python·django·sqlite
特种加菲猫14 分钟前
初阶数据结构之队列的实现
开发语言·数据结构·笔记
在路上走着走着19 分钟前
clickhouse数据库,http请求访问,支持参数化
数据库·clickhouse·http
2的n次方_23 分钟前
MyBatis Plus 项目的创建和使用
数据库·mybatis·mybatis plus
张彦峰ZYF1 小时前
解读InnoDB数据库索引页与数据行的紧密关联
数据库·sql·mysql·postgresql·oracle
武子康1 小时前
Java-08 深入浅出 MyBatis - 多对多模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据库·sql·mybatis