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

news2024/9/21 20:27:16

 目录

相关传送门

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.coloradmin.cn/o/1527598.html

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

相关文章

2、RabbitMQ_安装

RabbitMQ安装文档 RabbitMQ官网下载地址:https://www.rabbitmq.com/download.html 1.安装依赖 在线安装依赖环境: yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc x…

【算法与数据结构】二叉树(前中后)序遍历

文章目录 📝前言🌠 创建简单二叉树🌉二叉树的三种遍历🌠前序🌉中序遍历 🌠后序遍历 🌠二叉树节点个数🌉二叉树节点个数注意点 🚩总结 📝前言 一棵二叉树是结…

为什么选择 Flink 做实时处理

优质博文:IT-BLOG-CN 为什么选择 Flink 【1】流数据更真实地反映了我们的生活方式(实时聊天); 【2】传统的数据架构是基于有限数据集的(Spark 是基于微批次数据处理); 【3】我们的目标&#xf…

C语言-memset(改变数值函数)

memset&#xff08;改变数值函数&#xff09; 函数的语法 &#xff08;第几个元素&#xff0c;改变成什么元素&#xff0c;几个字节&#xff09; memset函数是C语言标准库函数之一&#xff0c;用于将内存中的某一块区域全部设置为某个特定的值。它定义在<string.h>头文…

MyBatisPlus 之四:MP 的乐观锁和逻辑删除、分组、排序、链式的实现步骤

乐观锁 乐观锁是相对悲观锁而言的&#xff0c;乐观锁假设数据一般情况不会造成冲突&#xff0c;所以在数据进行提交更新的时候&#xff0c;才会正式对数据的冲突与否进行检测&#xff0c;如果冲突&#xff0c;则返回给用户异常信息&#xff0c;让用户决定如何去做。 乐观锁适用…

服务器数据恢复—光纤环境互斥不当导致存储VMFS卷损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某公司的信息管理平台&#xff0c;通过3台虚拟机共享了一台存储设备供企业内部使用&#xff0c;存储设备中存放了公司内部重要的数据文件。 由于业务增长的需要&#xff0c;管理员又在这个存储网络上连接了一台Windows server服务器&a…

供应链投毒预警 | 开源供应链投毒202402月报发布啦

概述 悬镜供应链安全情报中心通过持续监测全网主流开源软件仓库&#xff0c;结合程序动静态分析方式对潜在风险的开源组件包进行动态跟踪和捕获&#xff0c;发现大量的开源组件恶意包投毒攻击事件。在2024年2月份&#xff0c;悬镜供应链安全情报中心在NPM官方仓库&#xff08;…

uniapp可视范围高度 - 用户屏幕可操作的屏幕高度 - 适用于APP、H5@公众号、纯H5@Chrome

可视范围高度 let heightPx uni.getWindowInfo().windowHeight uni.getWindowInfo().windowTop 官方手册 uni.getWindowInfo() | uni-app官网uni-app,uniCloud,serverless,uni.getWindowInfo()https://uniapp.dcloud.net.cn/api/system/getWindowInfo.html 实测数据 uni.ge…

【C++初阶】第七站:string类的初识(万字详解、细节拉满)

前言&#xff1a; &#x1f4cd;本文知识点&#xff1a;string的初识 本专栏&#xff1a;C 目录 一、什么是STL 二、STL的六大组件 三、STL的缺陷 四、为什么学习string类&#xff1f; 五、标准库中的string类 1、string类(了解) 2、string类的常用接口说明&#xff08;…

2023新版mapinfo美化电子地图 新版2013Arcgis shp电子地图 下载

2023新版MapInfo和电子地图美化&#xff0c;以及2013版ArcGIS的SHP电子地图设计&#xff0c;是地理信息系统&#xff08;GIS&#xff09;领域中的两个重要话题。下面将分别对这两个主题进行描述。 样图&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1WB4AGsycyBGagVq5…

Python之Web开发中级教程----Django站点管理

Python之Web开发中级教程----Django站点管理 网站的开发分为两部分&#xff1a;内容发布和公共访问 内容发布是由网站的管理员负责查看、添加、修改、删除数据 Django能够根据定义的模型类自动地生成管理模块 使用Django的管理模块, 需要按照如下步骤操作 : 1.管理界面本地…

21年电赛-送药小车—基于OpenMV的寻迹+检测路口+数字识别(多模版匹配)(附代码)

我们花费了四天时间打了一场21年的电赛改编题——智能送药小车。虽然结果不尽人意&#xff0c;但这是我学习32以来第一次正式的打比赛&#xff0c;对我来说要学习的东西&#xff0c;所增长的经验真的特别多&#xff08;虽然基本上都是学长在出力~&#xff09;下来我就把关于这次…

上位机图像处理和嵌入式模块部署(qmacvisual畸变矫正)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 大部分同学在开始做计算机图像的时候&#xff0c;是没有意识到畸变矫正这个问题的。当然不仅仅是畸变矫正&#xff0c;很多同学还会忽略光源的问题…

qt使用Windows经典风格,以使QTreeView或QTreeWidge有节点线或加号

没有使用Windows经典风格的QTreeView或QTreeWidget显示如下&#xff1a; 使用Windows经典风格的QTreeView或QTreeWidget显示如下&#xff1a; 树展开时&#xff1a; 树未展开时&#xff1a; 可以看到&#xff1a; 未使用Windows经典风格时&#xff0c;QTreeView或QTreeWidget…

Memcached-分布式内存对象缓存系统

目录 一、NoSQL 介绍 二、Memcached 1、Memcached 介绍 1.1 Memcached 概念 1.2 Memcached 特性 1.3 Memcached 和 Redis 区别 1.4 Memcached 工作机制 1.4.1 内存分配机制 1.4.2 懒惰期 Lazy Expiration 1.4.3 LRU&#xff08;最近最少使用算法&#xff09; 1.4.4…

孙溟㠭于北京大学北大书店现场创作

孙溟㠭于北京大学北大书店现场创作篆刻作品 孙溟㠭北大书店现场创作 孙溟㠭于北京大学北大书店展览期间现场创作 孙溟㠭北京大学篆刻展现场创作 图文/氿波

【C语言】守护进程(daemon)的输出到一个文本文件

一、常用的守护进程函数 void daemonize () {//deamonizepid_t pid fork();if( pid > 0 ){ //parent exitexit(0);}//child continuesetsid();chdir("/");close(0);open("/dev/null", O_RDWR);//no env debugif(!getenv("debug")){cl…

Flask中的Blueprints:模块化和组织大型Web应用【第142篇—Web应用】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Flask中的Blueprints&#xff1a;模块化和组织大型Web应用 在构建大型Web应用时&#xff0…

面试经典150题(114-118)

leetcode 150道题 计划花两个月时候刷完之未完成后转&#xff0c;今天完成了5道(114-118)150 gap 了一周&#xff0c;以后就不记录时间了。。 114.(70. 爬楼梯) 题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不…

【Qt图形界面引擎(一)】:第一个Qt程序

跨平台图形界面引擎&#xff0c;接口简单&#xff0c;易上手&#xff0c;一定程度简化内存。 Qt发展史 1991年由Qt Company开发的跨平台C图形用户界面应用程序开发框架2008年&#xff0c;Qt Company科技被诺基亚公司收购&#xff0c;Qt也因此成为诺基亚旗下的编程语言工具2012…