当前位置: 首页 > news >正文

redis入门

1 介绍

1.1 简介

        Redis(Remote Dictionary Server)是一个使用ANSI C编写的支持网络、基于内存、分布式、可选持久性的键值对存储数据库。根据月度排行网站DB-Engines.com的数据,Redis是最流行的键值对存储数据库。                                                                -- 维基百科

        Redis是一种开源的、高性能的键值对(key-value)数据库,具有多种数据类型支持和持久化功能,广泛应用于缓存、消息队列和即时信息查询等场景

        Redis的出现是为了解决关系型数据库在高并发情况下的性能瓶颈

Redis的官方网站地址:https://redis.io/

1.2 命名规范

业务模块名:业务逻辑含义:其他:value类型

2 基础数据类型

redis 支持多种数据类型,每种都有其独特的操作和应用场景。以下将详细介绍Redis的五种基本数据类型及其常用操作:

2.1 字符串(String)

  • 基本操作:字符串是Redis中最基本的数据类型,可以存储字符串、整数、浮点数等。操作包括SETGETMSETMGETINCRDECRAPPEND等。

应用实例

  • 缓存数据:例如,缓存用户信息:

  • 计数器:对网站访问次数进行计数:

  • 分布式锁:实现简单的分布式锁,用于控制多个客户端对同一资源的访问。

2.2 列表(List)

  • 基本操作:列表是简单的字符串列表,支持在列表两端插入或删除元素。操作包括LPUSHRPUSHLPOPRPOPLRANGELINDEX等。

应用实例

  • 消息队列:生产者将消息放入队列左端,消费者从右端取出消息:

  • 任务队列:使用BRPOP实现阻塞队列,等待任务到来。
  • 最近访问记录:例如,记录用户的浏览历史,最新访问的内容插入到列表头部:

2.3 集合(Set)

  • 基本操作:集合是无序且不重复的字符串集合。操作包括SADDSREMSMEMBERSSISMEMBER等。

应用实例

  • 标签管理:给文章添加标签,一个标签集合对应一篇文章:

  • 好友关系:存储用户的好友列表,通过集合的交集操作找到共同好友。
  • 去重操作:存储唯一的访问IP,实现去重:

2.4 有序集合(Sorted Set)

  • 基本操作:有序集合类似于集合,但每个元素关联一个分数,通过分数排序。操作包括ZADDZREMZRANGEZREVRANGE等。

应用实例

  • 排行榜:例如,用户的积分排行榜,按积分排序:

  • 时间线:存储用户发布的微博,用时间戳作为分数:

2.5 哈希(Hash)

  • 基本操作:哈希是一个键值对集合,适用于存储对象。操作包括HSET,HGET,HMGET,HINCRBY,HGETALL等。

应用实例

  • 存储用户信息

  • 配置信息:存储应用程序的配置参数:

3 应用场景与优势

  • 缓存系统:由于Redis的高性能和内存存储特性,使其成为理想的缓存解决方案,可以大幅减少数据库的负载。例如,在网站应用中,可以将频繁查询的数据缓存到Redis中,提高响应速度。
  • 消息队列:利用列表类型的特性,Redis可以作为消息队列使用,支持发布/订阅模式,使客户端之间能够通过消息传递进行通信。这在实时通知、任务分发等场景中非常有用。
  • 即时信息查询:Redis适合用于需要快速读写的场景,如热点新闻、购票抢票等。例如,可以通过Redis来存储用户的在线状态、最近的位置信息等。
  • 分布式锁:Redis的原子性操作和高性能使其成为实现分布式锁的理想选择,可用于同步进程和避免资源竞争。例如,在并发环境下,通过Redis的setnx命令可以实现锁的获取和释放。

4 与其他NoSQL数据库之间的对比

RedisMemcachedMongoDB
数据结构支持支持丰富的数据结构,包括String(字符串)、List(列表)、Set(集合)、Hash(哈希)和Sorted Set(有序集合)。主要支持简单的Key-Value数据结构,更适合作为缓存系统。支持更为复杂的文档型数据结构,适合处理结构化和半结构化数据。
性能由于基于内存运行,性能极高,读取速度可达数十万次每秒,写速度也可达十万次每秒。同样基于内存,性能与Redis相当,但在高并发场景下表现更优。虽也基于内存,但因支持更复杂的查询和写入操作,性能略低于Redis和Memcached。
数据持久化支持数据持久化,可以将数据保存到硬盘上,通过RDB快照和AOF日志实现数据安全。不支持持久化,数据仅存在于内存中,重启后数据会丢失。支持数据持久化,通过日记文件(journaling)和复制集(replica sets)保证数据安全。
扩展性支持主从复制和哨兵模式实现高可用性,但需要手动进行分片。可以通过一致性哈希进行分布式扩展,但节点间无数据同步。支持自动分片和复制集,能够自动进行数据均衡和故障转移。
事务支持支持一定程度的事务处理,但仅限于单个命令的入队执行。不支持4.0版本后开始支持
查询语言使用专用的命令接口,支持丰富的命令进行数据操作。使用简单的文本协议进行通信。使用BSON格式进行数据交换,支持丰富的查询语言。
应用场景适用于缓存、会话管理、计数器、消息队列等需要高性能和复杂数据结构的场景。主要用于缓存系统,减少数据库负载。适用于大数据量存储、实时数据分析、内容管理等场景。

         综上所述,Redis以其丰富的数据结构和高性能在多种场景下表现优异,尤其是需要快速读写和复杂数据结构的应用中占据明显优势。Memcached则更适合作为后端数据库的前端缓存系统,简化数据结构并提高响应速度。MongoDB的独特之处在于其处理大规模数据和复杂查询的能力,适合大数据和实时分析应用。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python通讯和文件打包解包之struct
  • easyexcel--导入导出实现自定义格式转换
  • 基于树莓派的智能AI网关接入豆包流程:HTTP/HTTPS、MQTT、Flask、Web可视化(代码示例)
  • 【Linux修行路】文件系统之缓冲区
  • 深度解析敏捷架构在数字时代的应用:创新理论与实践的融合
  • 石油采集行业应用解决方案
  • CSP 2023 普及组第一轮 - CSP/S 2023初试题 完善程序第二题解析
  • 如何为您的专用IP地址选择正确的IP SSL证书
  • java项目部署到linux
  • MySQL 多表连接(JOIN)
  • Leetcode-552 学生出勤记录II
  • 如何在 KubeBlocks 中配置实例模板?
  • Spring之@Bean注解
  • MySQL 如何保证事务的原子性
  • 考完PMP最好的出路!是做项目管理培训讲师!
  • ECMAScript6(0):ES6简明参考手册
  • MySQL QA
  • SpingCloudBus整合RabbitMQ
  • springboot_database项目介绍
  • vue2.0项目引入element-ui
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 复杂数据处理
  • 搞机器学习要哪些技能
  • 给github项目添加CI badge
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前端知识点整理(待续)
  • 深度解析利用ES6进行Promise封装总结
  • 数据可视化之 Sankey 桑基图的实现
  • 通过几道题目学习二叉搜索树
  • 延迟脚本的方式
  • 用jquery写贪吃蛇
  • 湖北分布式智能数据采集方法有哪些?
  • 整理一些计算机基础知识!
  • ​configparser --- 配置文件解析器​
  • # 数据结构
  • #1014 : Trie树
  • #Linux(make工具和makefile文件以及makefile语法)
  • #在 README.md 中生成项目目录结构
  • (2020)Java后端开发----(面试题和笔试题)
  • (42)STM32——LCD显示屏实验笔记
  • (8)STL算法之替换
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (不用互三)AI绘画工具应该如何选择
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (全注解开发)学习Spring-MVC的第三天
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)进入MySQL 【事务】
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (一)、python程序--模拟电脑鼠走迷宫
  • (一)模式识别——基于SVM的道路分割实验(附资源)
  • (已解决)什么是vue导航守卫
  • (转)一些感悟
  • .ai域名是什么后缀?