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 届应届毕业生。欢迎关注,持续分享,包括但不限于技术文章。全网同名...

相关推荐
hnlucky4 分钟前
redis 数据类型新手练习系列——Hash类型
数据库·redis·学习·哈希算法
Pasregret18 分钟前
访问者模式:分离数据结构与操作的设计模式
数据结构·设计模式·访问者模式
LucianaiB1 小时前
【金仓数据库征文】_AI 赋能数据库运维:金仓KES的智能化未来
运维·数据库·人工智能·金仓数据库 2025 征文·数据库平替用金仓
时序数据说1 小时前
时序数据库IoTDB在航空航天领域的解决方案
大数据·数据库·时序数据库·iotdb
.生产的驴1 小时前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
AnsenZhu2 小时前
2025年Redis分片存储性能优化指南
数据库·redis·性能优化·分片
阿让啊2 小时前
C语言中操作字节的某一位
c语言·开发语言·数据结构·单片机·算法
oydcm2 小时前
MySQL数据库概述
数据库·mysql
oioihoii2 小时前
C++23中if consteval / if not consteval (P1938R3) 详解
java·数据库·c++23
草莓啵啵~2 小时前
搜索二叉树-key的搜索模型
数据结构·c++