【开发】Redis 的理解与数据存储格式

 目录

相关传送门

1. NOSQL和关系型数据库比较

2. 主流的NOSQL产品

3. Redis的理解

4.  redis数据存储格式

4.1 String

4.2 Hash

4.3 List

4.4 Set

4.5. sorted_set

注:手机端浏览本文章可能会出现 “目录”无法有效展示的情况,请谅解,点击侧栏目录进行跳转   


相关传送门

1.【数据结构】布隆过滤器

2.【开发】SpringBoot 整合 Redis


1. NOSQL和关系型数据库比较

优点:低成本、高查询、存储格式丰富、支持多种数据类型

  1. nosql简单易部署,且多数开源
  2. nosql将数据存储在缓存之中,sql将数据存储在硬盘中;nosql比sql数据库查询速度快
  3. nosql的存储格式是键值对形式,文档形式、图片形式等,可以存储基础类型以及对象或者集合等格式,sql支支持基础数据
  4. 关系型数据库有类似Join的多表查询机制限制扩展很艰难

缺点:维护技术有限、学习使用成本高、不提供关系型数据库对事务的处理

  1. 新技术,维护工具
  2. 不遵循SQL标准,学习使用成本高
  3. 不提供关系型数据库对事务的处理

2. 主流的NOSQL产品

  • 键值(Key-Value)存储数据库
    • 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB

    • 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。数据模型: 一系列键值对

    • 优势: 快速查询

    • 劣势: 存储的数据缺少结构化

  • 列存储数据库

    • 相关产品:Cassandra, HBase, Riak

    • 典型应用:分布式的文件系统

    • 数据模型:以列簇式存储,将同一列数据存在一起

    • 优势:查找速度快,可扩展性强,更容易进行分布式扩展劣势:功能相对局限

  • 文档型数据库

    • 相关产品:CouchDB、MongoDB

    • 典型应用:Web应用(与Key-Value类似,Value是结构化的) 数据模型: 一系列键值对

    • 优势:数据结构要求不严格

    • 劣势: 查询性能不高,而且缺乏统一的查询语法

  • 图形(Graph)数据库

    • 相关数据库:Neo4J、InfoGrid、Infinite Graph

    • 典型应用:社交网络数据模型:图结构

    • 优势:利用图结构相关算法。

    • 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

数据库排名:

3. Redis的理解

概念:C语言开发的一个开源的高性能键值对存储形式的数据库

特征:

1. 数据之间没有必然的关联关系

2. 内部采用单线程机制进行工作

3. 高性能

4. 多数据类型支持

名称类型数据结构
字符串类型String 

String

列表类型list

LinkedList

散列类型hash

HashMap

集合类型 set

HashSet

有序集合类型sorted_set

TreeSet

5. 持久化支持。可以进行数据灾难恢复

4.  redis数据存储格式

  • redis自身是一个map所存储的数据都采用键值对的形式存储
  • key部分永远都是字符串,value部分指的是存储的数据的类型
    • key的语法:
    • 在同一个项目中,key部分最好使用统一的命名模式
    • key区分大小写
    • key尽量不超过1024字节。不仅消耗内存,也会降低查找的效率
    • key不易太短,太短会降低可读性

4.1 String

  • 存储的数据:单个数据,最简单最常用的数据存储类型
  • 存储的数据格式:一个存储空间保存一个数据
  • 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作用数字操作使用

4.2 Hash

  • 存储的困惑:对象类数据的存储如果具有频繁的更新需求会显得笨重
  • 哈希的特点:
    • 存储需求:对一系列存储的数据进行编组,方便管理
    • 存储结构:一个存储空间保存多个键值对数据
    • hash类型:底层使用哈希表结构实现数据存储
  • hash存储结构优化
    • 如果filed数量较少,存储结构优化为类数组结构
    • 如果filed数量较多,存储结构使用HashMap结构

4.3 List

  • 存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分
  • 存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
  • list类型:保存多个数据,底层使用双向链表存储结构实现

4.4 Set

  • 存储需求:存储大量的数据,在查询方面提供更高的效率
  • 存储结构:存储大量的数据,高效的内部存储机制,便于查询
  • set类型:与hash存储结构完全相同,仅存储键,不存储值,并且值是不允许重复的

4.5. sorted_set

  • 存储需求:数据排序 有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式
  • 存储结构:新的存储模型,可以保存可排序的数据
  • sorted_set类型:在set的存储结构基础上添加可排序字段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/754591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive:数据仓库利器

1. 简介 Hive是一个基于Hadoop的开源数据仓库工具,可以用来存储、查询和分析大规模数据。Hive使用SQL-like的HiveQL语言来查询数据,并将其结果存储在Hadoop的文件系统中。 2. 基本概念 介绍 Hive 的核心概念,例如表、分区、桶、HQL 等。 …

Tomcat Session ID---会话保持

简单拓补图 一、负载均衡、反向代理 7-1nginx代理服务器配置 [rootdlnginx ~]#yum install epel-release.noarch -y ###安装额外源[rootdlnginx ~]#yum install nginx -y[rootdlnginx ~]#systemctl start nginx.service[rootdlnginx ~]#systemctl status nginx.service [ro…

Javaweb学习记录(四)分层处理架构-分层解耦

三层架构 程序设计分为下面三层架构,分别为Controller控制层,Service逻辑处理层,Dao数据访问层。这三层各自执行自己所对应的功能,使程序的扩展性和可维护性提高 例如下面我想设计一个分层的程序,实现Controller层&am…

MidJourney 使用指北

官网:docs.midjourney.com 文档:docs.midjourney.com/docs/quick-… PS:魔法需要订阅使用了 准备工作 一、进入 discord官网 二、下载 Discord App 三、注册Discord账号 创建服务器 登录 discord App,点击添加按钮&#xff…

AJAX——综合案例

1 Bootstrap弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 引入bootstrap.css和bootstrap.js准备弹框标签&#xff0c;确认结构通过自定义属性&#xff0c;控制弹框的显示和隐藏 <!DOCTYPE html> <html la…

详解Java常用排序算法(10种,含演示动画)

Java常用的排序算法有以下几种&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;选择排序&#xff08;Selection Sort&#xff09;插入排序&#xff08;Insertion Sort&#xff09;希尔排序&#xff08;Shell Sort&#xff09;归并排序&#xff08;Merge Sort&#x…

Android Studio:你的主机中的软件终止了一个已建立的连接

我不喜欢等人也不喜欢被别人等——赤砂之蝎 一、提出问题 二、分析问题 搜索网上的教程尝试解决 1、任务管理器结束adb进程无用 2、电脑没有开启热点排除热点问题 3、校园网切换到热点 4、项目重新解压打开 5、更换国内镜像源 上述方法全部无法解决问题 分析问题原因在于之前A…

Github 2024-03-18 开源项目周报Top15

根据Github Trendings的统计,本周(2024-03-18统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6TypeScript项目2Go项目2JavaScript项目2非开发语言项目1HTML项目1CSS项目1Rust项目1Dart项目1C++项目1Jupyter Notebook项目1Electr…

JVM中对象创建过程

在JVM中对象的创建&#xff0c;我们从一个new指令开始&#xff1a; 这个过程大概图示如下&#xff1a; 虚拟机收到new指令触发。 类加载检查&#xff1a;如果类没有被类加载器加载&#xff0c;则执行类加载流程&#xff08;将class信息加载到JVM的运行时数据区的过程&#xff…

Stable Diffusion + Segment Anything试用

安装 从continue-revolution/sd-webui-segment-anything安装插件分割模型下载后放到这个位置&#xff1a;${sd-webui}/extension/sd-webui-segment-anything/models/sam下&#xff0c;可以下载3个不同大小的模型&#xff0c;从大到小如下&#xff1a;vit_h is 2.56GB, vit_l i…

Java后端八股----JVM篇

上图中线程1&#xff0c;2如果资源被抢占了&#xff0c;则程序计数器记录一下执行的行号&#xff0c;等到资源就绪后会从记录的行号继续向后执行。 Java8把静态变量以及常量放到了线程的本地内存原空间中(避免放在堆中不可控)。 &#x1f446;图中第二种情况不太容易出现…

Linux docker2--镜像及容器操作-nginx部署示例

一、上一篇已经完成了docker的基础环境搭建&#xff0c;和docker的安装。不清楚的小伙伴可以自己找上一篇看一下。本例以部署nginx为例展示 二、镜像相关 1、切换docker的镜像源为阿里云 命令&#xff1a; sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <&l…

敏捷开发——elementUI/Vue使用/服务器部署

1. 创建vue项目 2. 安装element-ui组件库 npm i -S element-ui或 npm install element-ui3. 在main.js中导入element-ui组件 import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css Vue.use(ElementUI)4. 运行 npm run serve后可以使用 ctrc终止进…

如何选择合适的数据可视化工具?

如果是入门级的数据可视化工具&#xff0c;使用Excel插件就足够了&#xff01; Excel插件&#xff0c;tusimpleBI 是一款 Excel 图表插件&#xff0c;提供超过120项图表功能&#xff0c;帮助用户制作各种 Excel 所没有的高级图表&#xff0c;轻轻松松一键出图。 它能够制作10…

VUE3 组件通信

props 用途&#xff1a;可以实现父子组件、子父组件、甚至兄弟组件通信 父组件 <template><div><Son :money"money"></Son></div> </template><script setup lang"ts"> import Son from ./son.vue import { re…

量子加速超算简介

量子加速超算简介 有用的量子计算的发展是全球政府、企业和学术界的巨大努力。 量子计算的优势可以帮助解决世界上一些与材料模拟、气候建模、风险管理、供应链优化和生物信息学等应用相关的最具挑战性的问题。 要实现量子计算的优势&#xff0c;需要将量子计算机集成到现有的…

容器部署对比:通用容器部署 vs 使用腾讯云容器镜像服务(TCR)部署 Stable Diffusion

目录 引言1 通用容器部署的主要步骤1.1 准备环境1.2 构建 Docker 镜像1.3 上传镜像1.4 部署容器1.5 配置网络1.6 监控和维护 2 使用腾讯云容器镜像服务&#xff08;TCR&#xff09;部署的主要步骤2.1 下载 Stable Diffusion web UI 代码2.2 制作 Docker 镜像2.3 上传镜像到 TCR…

Scala--02--IDEA编写Hello World

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.Scala 插件安装1&#xff09;插件离线安装步骤2&#xff09; 插件在线安装&#xff08;推荐可选&#xff09; 2.HelloWorld 案例1&#xff09;打开 IDEA->点击…

Javaweb学习记录(三)请求响应案例

下面为一个请求响应案例&#xff0c;postman发送请求&#xff0c;服务器响应将一个xml文件中的数据通过读取解析&#xff0c;将其用Result类标准的格式返回前端&#xff0c;在前端用json的方式显示 后端Controller代码 1、通过本类的字节码文件得到类加载器并寻找到需要解析的…

Jenkins-pipeline流水线构建完钉钉通知

添加钉钉机器人 在钉钉群设置里添加机器人拿出Webhook地址&#xff0c;设置关键词 Jenkins安装钉钉插件 Dashboard > 系统管理 > 插件管理&#xff0c;搜索构建通知&#xff0c;直接搜索Ding Talk也行 安装DingTalk插件&#xff0c;重启Jenkins 来到Dashboard > 系…