1.4最流行的NoSQL——Redis

2023-11-10

本文比较重要的概念:NoSQL(及它的优点) Redis(及它的优点)

  1. NoSQL(Not Only SQL)

NoSQL:
在互联网中作用很大,可以在很大程度上提高互联网系统的性能。具备一定持久层的功能,也可以作为一种缓存工具

注释:
Redis缓存:
是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API

对于NoSQL数据库而言,作为持久层,它存储的数据使半结构化的,这意味着计算机在读入内存中有更少的规则,读入速度更快。对于那些结构化、多范式规则的数据库系统而言,它更具性能优势。
作为缓存,它可以支持大数据存入内存中,只要命中率高,它就能快速响应,因为在内存中的数据读/写比数据库读/写磁盘的速度快几十到上百倍

注释:
半结构化:
数据分类——结构化数据、非结构化数据、半结构化数据
半结构化是结构化的数据,但是结构变化很大。因为我们要了解数据的细节所以不能将数据简单的组织成一个文件按照非结构化数据处理,由于结构变化很大也不能够简单的建立一个表和他对应。本文主要讨论针对半结构化数据存储常用的两种方式。

书本原文 划重点

NoSQL的作用
对于常用数据,第一次从数据库读出,然后就存放在NoSQL中,这样以后就无需访问数据库,只需从NoSQL中读出即可,性能就会比数据库快得多
对于那些高并发的操作,可以在NoSQL上先完成写入,等待某一个时刻再批量写入数据库,这样就能满足系统的性能要求了

注释:
数据库范式:
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

  1. NoSQL作为缓存工具,具有高性能、高响应等功能
  2. 当前Redis已经成为主要的NoSQL工具
  3. Redis是当前互联网世界最为流行的NoSQL

Redis的优点:
·响应快速(响应速度远超数据库,有效提高系统性能)
·支持6种数据类型(字符串[可以存储Java基础数据类型]、哈希结构[可以存储对象]、列表[可以存储List对象]、集合、可排序集合、基数)(两大好处:满足存储各种数据结构体的需要和读/写速度更快)
·操作都是原子的(在需要高并发的场合可以考虑使用Redis的事务,处理一些需要锁的业务)
·MultiUtility工具(可以再如缓存、消息传递队列中使用,在应用程序如Web应用程序会话、网站页面点击数等任何短暂的数据使用)

  1. 总结

书本原文 划重点

一方面,使用NoSQL从数据库中读取数据进行缓存,就可以从内存中读取数据了,而不像数据库一样读磁盘

另一方面,它也能满足互联网高并发需要告诉处理数据的场合,比如抢红包、商品秒杀等场景,这些场合需要高速处理,并保证并发数据安全和一致性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1.4最流行的NoSQL——Redis 的相关文章

  • 如何编写 Maven 构建脚本来执行 Java

    如何在构建过程中或构建刚刚完成后执行 Java 程序 可以直接从 pom 中执行此操作吗 mvn exec java Dexec mainClass org sonatype mavenbook weather Main EDIT 假设我想
  • 在Java Servlet中获取通过jquery ajax发送的参数[重复]

    这个问题在这里已经有答案了 我在网上搜索这个主题 但找不到有效的示例 我会很高兴有人能给我帮助 这就是我测试的 ajax url GetJson type POST dataType json contentType application
  • 来自行号的方法名称

    给定特定类源代码 Java C 的行号 是否有一种简单的方法来获取它所属的方法的名称 如果它落入其中 大概使用抽象语法树 这对于将 checkstyle 的输出限制为仅触及的方法很有用 我假设您必须使用抽象语法树来执行 Line gt Me
  • openFileOutput 在单例类中无法正常工作 - 想法/解决方法?

    作为一名 Android 开发新手 我遇到了一些奇怪的问题 我想创建一个类 它方法其他类 活动 任何可以用于以某种特殊方式处理文件的类 假设为了简单起见 我们将记录一些内容 如果我在活动中执行以下操作 例如在 OnClick 侦听器中 则一
  • Selector.close() 是否关闭所有客户端套接字?

    我是 nio 套接字的新手 我已经使用 nio 套接字编写了一个服务器 现在我正在尝试编写关闭钩子以确保通过清理资源正常退出 我的问题是Selector close 方法关闭所有客户端套接字 如果没有 请告诉我如何访问所有客户端套接字 而无
  • Android Studio 与 Google Play 服务的编译问题

    我正在运行 Android Studio 0 8 4 并在 Android Studio 0 8 2 上尝试过此操作 我正在运行 Java JDK 1 8 0 11 并尝试使用 JDK 1 8 0 05 每当我尝试构建我的 android
  • 当前平台不支持桌面 API

    我遇到过这个错误 java lang UnsupportedOperationException 当前平台不支持桌面 API 我将从我的 java 应用程序中打开一个文件 我用这个方法 Desktop getDesktop open new
  • 当我们使用赋值而不是比较时,如何评估 if/while 条件?

    我在学习 Java 的 OCA OCP 时发现了这个令人惊讶的事情 下面是第一段代码 其中 if 测试条件 部分 让我惊讶 public class BooleanIf public static void main String args
  • 使用正则表达式验证电子邮件的最大长度

    我找到了用于电子邮件验证的正则表达式 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4 我希望电子邮件的最大长度为 20 个字符 因此我将其更改为 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4
  • 在 doxygen 中使用 @see 或 @link

    我之前用 Javadoc 记录并使用了标签 see link or see foo and link foo 在我的描述中链接到其他课程 现在我尝试了doxygen 似乎这些标签不兼容 如果我运行 doxygen 完整的标签将被简单地解释为
  • 递归取消 allOf CompletableFuture

    如果我有 CompletableFuture
  • java:为什么主线程等待子线程完成

    我有一个简单的java程序 主线程 main 创建并启动另一个线程t class T extends Thread Override public void run while true System out println Inside
  • Laravel Redis 配置

    我目前正在使用 Laravel 和 Redis 创建一个应用程序 几乎一切都工作正常 我按照文档中的说明扩展了身份验证 用户可以订阅 登录 注销 我可以创建内容 所有内容都存储在 Redis 中 但我有一个问题 我无法运行 php arti
  • 生成一定长度的所有排列

    假设我们有一个字母表 abcdefghiklimnop 如何以有效的方式以五个一组的形式重复该字母表来递归生成排列 几天来我一直在为此苦苦挣扎 任何反馈都会有帮助 本质上这与 生成给定字符串的所有排列 https stackoverflow
  • 始终将双精度舍入

    我怎么总是能把一个double to an int 并且永远不要将其四舍五入 我知道Math round double 但我希望它始终向上舍入 所以如果是的话3 2 四舍五入为 4 您可以使用Math ceil method 请参阅Java
  • 向Java类库添加函数

    我使用的 Java 类库在很多方面都不完整 有很多类我认为应该内置其他成员函数 但是 我不确定添加这些成员函数的最佳实践 让我们调用不足的基类A class A public A long arbitrary arguments publi
  • 在 Spring MVC 中将请求写入文件

    我希望能够将整个请求写入 Spring MVC 控制器中的文件 我已尝试以下操作 但即使我使用大量参数发出 POST 请求 文件也始终为空 RequestMapping method RequestMethod POST value pay
  • 如何在不使用 -cp 开关的情况下在 Groovy 中自动加载数据库 jar?

    我想简化调用 Oracle 数据库的 Groovy 脚本的执行 如何将 ojdbc jar 添加到默认类路径以便我可以运行 groovy RunScript groovy 代替 groovy cp ojdbc5 jar RunScript
  • 假布尔值=真?

    我在一本书中找到了这段代码 并在 Netbeans 中执行了它 boolean b false if b true System out println true else System out println false 我只是不明白为什
  • JPA ManyToMany 产生的空联接表

    我有一个应用程序 其中我尝试使用 Hibernate 作为 JPA 提供程序来实现两个实体之间的多对多关系 我正在尝试的例子是一个单向的 其中一个相机可以有多个镜头 而镜头可以安装到多个相机中 以下是我的实体类 只需粘贴其中的相关部分 Ca

随机推荐

  • Java 中的 SQL 注入以及如何轻松预防

    什么是 SQL 注入 SQL注入是十大 Web 应用程序漏洞之一 简单来说 SQL注入是指通过用户输入的数据在查询中注入 插入SQL代码 它可以发生在任何使用关系数据库 如 Oracle MySQL PostgreSQL 和 SQL Ser
  • 如何在 Ubuntu 上使用 Stunnel 设置 SSL 隧道

    Status 已弃用 本文已弃用 不再维护 Reason Ubuntu 12 04 已于 2017 年 4 月 28 日终止生命周期 EOL 并且不再接收安全补丁或更新 请参阅 本文作为参考可能仍然有用 但可能不遵循最佳实践或适用于此版本或
  • 如何在 Ubuntu 14.04 LTS 上设置 Apache 虚拟主机

    介绍 Apache Web 服务器是在互联网上提供 Web 内容的最流行的方式 它占互联网上所有活跃网站的一半以上 并且非常强大和灵活 Apache 将其功能和组件分解为可以独立定制和配置的单独单元 描述单个站点或域的基本单位称为virtu
  • 如何使用多站点设置多个 WordPress 站点

    关于多个 WordPress 安装 2010 年 WordPress 发布了流行的内容管理平台 3 0 版本 在该版本中包含的众多改进中 WordPress 社区将 WordPress MU 合并到了主要的 WordPress 配置中 自更
  • Java 9 功能与示例

    Java 9 是一个主要版本 它为我们开发人员带来了很多功能 在本文中 我们将详细研究 Java 9 功能 Java 10 已发布 有关 Java 10 版本的完整概述 请访问Java 10 特性 Java 9 特性 Some of the
  • 如何在 CentOS 7 服务器上添加和删除用户

    介绍 当您第一次开始使用新的 Linux 服务器时 添加和删除用户通常是您需要做的第一件事 在本指南中 您将学习如何创建用户帐户 分配sudo权限 并删除 CentOS 7 服务器上的用户 先决条件 要完成本教程 您将需要 一台 CentO
  • 如何在 Ubuntu 22.04 上设置私有 Docker 注册表

    作者选择了免费开源基金接受捐赠作为为捐款而写程序 介绍 Docker 注册表是一个管理 Docker 容器镜像存储和交付的应用程序 注册表集中容器映像并减少开发人员的构建时间 Docker 镜像通过虚拟化保证相同的运行时环境 但构建镜像可能
  • 如何在 Ubuntu 16.04 上将 Nginx Web 根移动到新位置

    介绍 在 Ubuntu 上 默认情况下 Nginx Web 服务器将其文档存储在 var www html 它通常与操作系统的其余部分一起位于根文件系统上 但有时 将文档根移动到另一个位置会很有帮助 例如单独安装的文件系统 例如 如果您从同
  • 如何使用BackupPC在Ubuntu 12.04 VPS上创建备份服务器

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何设置 Nginx 负载均衡

    关于负载均衡 负载平衡是一种有用的机制 可以在多个功能强大的虚拟专用服务器之间分配传入流量 通过将处理机制分配给多台计算机 可以为应用程序提供冗余 确保容错和提高稳定性 用于负载平衡的循环算法将访问者发送到一组 IP 中的一个 在最基本的层
  • 如何在 Java 中使用运算符

    作者选择了免费开源基金接受捐赠作为为捐款而写程序 介绍 An operator是一个或多个符号的组合 比如著名的算术运算符减号 并加上 或更高级的instanceof 当您对值或变量应用运算符时 您会得到运算结果 此类操作是编程的基础 因为
  • 如何在 Ubuntu 14.04 服务器上安装 Node.js

    介绍 Node js 是一个用于服务器端编程的 Javascript 平台 允许用户快速构建网络应用程序 通过在前端和后端都利用 Javascript 开发可以更加一致并在同一系统内进行设计 在本指南中 我们将向您展示如何在 Ubuntu
  • mysql如何显示ddl_Mysql DDL语句之视图

    Mysql 视图是一个虚拟表 内容由 select 查询语句定义 同真实的表数据一致 但是视图并不在数据库中以存储的数据值形式存在 试图引用自定义查询表的字段 并且在引用试图时动态生成 对其所引用的基础表来说 Mysql 视图的作用类似于筛
  • 【计算机视觉

    文章目录 一 ModaNet 二 SKU110K 三 SceneNet 四 VT5000 五 Washington RGB D 六 Argoverse HD 七 CADC Canadian Adverse Driving Condition
  • 小技巧——宝塔面板重启、重置命令

    1 Centos 安装脚本 yum install y wget wget O install sh http download bt cn install install sh sh install sh 2 Ubuntu Deepin
  • Qt示例5:用Qt画一个漂亮预警仪表

    以下是用Qt实现漂亮预警仪表的步骤和代码 创建一个Qt项目 并添加一个主窗口 在主窗口中添加QGraphicsView控件 用于绘制预警仪表 创建一个QGraphicsScene对象 并将其设置为QGraphicsView的场景 QGrap
  • emmx用xmind打开_XMind思维导图:专注扩展延伸和梳理,让你事半功倍!

    更多精彩软件 请关注我们 今日新闻 现如今 思维导图被普遍运用在各行各业 充当着重要的角色 但你会发现这些导图绝大多数是通过电脑软件绘制的 随着移动互联网的高速发展 实际情况告诉我们需要一款手机版的思维导图软件 便于我们在手机上就能自由整理
  • mmdetection踩坑1~docker内RuntimeError: DataLoader worker (pid 1727) is killed by signal: Bus errer

    今天在docker内使用mmdetection做训练时 workers per gpu参数设置为0时 可以正常训练 但修改配置文件中workers per gpu 2参数后 开始训练 程序报错 网上查资料显示 是因为docker的共享内存不
  • 初始化列表

    在构造函数后面 属性 值 参数 属性 值 参数 define CRT SECURE ND WARNINGS include
  • 1.4最流行的NoSQL——Redis

    本文比较重要的概念 NoSQL 及它的优点 Redis 及它的优点 NoSQL Not Only SQL NoSQL 在互联网中作用很大 可以在很大程度上提高互联网系统的性能 具备一定持久层的功能 也可以作为一种缓存工具 注释 Redis缓