redis数据库及其常用数据结构

news2024/11/16 9:25:57

redis数据库

非关系型数据库

非关系型数据库是什么?

非关系型数据库其实是相对于关系型数据库而言的,关系型数据库中同种数据存储在一张表中,使用表将不同种类的数据进行分隔并且表中的数据如果存在主键,也可以根据主键确定表与表之间的关系,或者说是数据与数据之间的关系;而非关系型数据库中所有的数据都是存放在一起的,数据与数据之间没有关系,我们无法通过一次查询而找到具有某种关系的数据(即使数据真的有关系)。

非关系型数据库的优缺点?

优点
  • 非关系型数据库可以将数据存放到内存中,提高数据的访问速度
  • 非关系型数据库中有多种类型的数据,可以存储很多不同种类的数据
缺点
  • 数据存储在内存中,如果出现突发性的故障可能会导致数据丢失,例如断电等情况,数据库中的数据还没有来得及保存(如果数据库正常关闭则会将数据保存在硬盘或者磁盘中)
  • 由于非关系型数据库的数据种类不统一并且没有按表进行划分,所以这些数据不容易管理和维护
  • 数据类型不统一并且数据之间不存在关系,导致非关系型数据库只能进行简单的查询,不能像关系型数据库那样可以进行关联查询

目前学到的只是比较浅,能想到的只有这些

redis数据库中的数据类型

redis中的数据是以键值对的方式进行存储,其中键的类型统一是string类型,而值具有很多种数据类型

五种常见的数据类型

  • string字符串
  • hash哈希
  • list列表
  • set集合
  • sorted set / zset有序集合

我们在对redis数据库中的数据进行存储时会使用不同的命令来存储不同数据类型的数据

string字符串

字符串类型的数据是指由很多和字符组成的一串数据,多用于存储一些结构较为简单的数据

set key value设置指定key的值

get key 获取指定key的值

setex key seconds value 设置指定key的值,并将key的过期时间设置为seconds秒

setnx key value 只有在key不存在时设置key的值

hash哈希

哈希类型的数据是键值对形式的(这里我们把键值对中的键称为属性,值称为属性的值),并且键值对都是string字符串类型的,就好比Java中的对象一样,我们将对象名当作键,对象中的成员变量名当作属性,成员变量的值当作属性的值。对象的成员变量可以有多个,哈希类型的数据也是一样可以存在多个。

在这里插入图片描述

所以说在Java中通常使用hash类型的数据来存储对象,并且如果添加了相同属性的数据则会将原来属性的值进行替换。

hset key field value 将哈希表key中的字段field的值设置为value

hget key field 获取存储在哈希表中指定字段的值

hdel key field 删除存储在哈希表中的指定字段

hkeys key 获取哈希表中的所有字段

hvals key 获取哈希表中的所有值

list列表

list类型的数据相当于链表,一个键可以存在多个值并且值是有序的(根据存入数据的顺序),list类型的数据可以从左边/右边插入/删除,但是想要获取指定范围内的元素、获取列表的长度只能从左边进行获取。

在这里插入图片描述

lpush key value [value…] 将一个或多个值插入到列表头部

lrange key start stop 获取列表指定范围内的元素(下标从0开始并且包含stop)

rpop key 移除并获取列表中最后一个元素

llen key 获取列表长度

set集合

set类型的数据就像Java中的set集合,数据是无序的并且不能元素重复的,可以存在多个

在这里插入图片描述

通常用于存储一些相同性质的数据,并且这些数据没有先后顺序

sadd key member [member…] 向集合添加一个或多个成员

smembers key 返回集合中的所有成员

scard key 获取集合的成员数

sinter key [key…] 返回给定所有集合的交集

sunion key [key…] 返回给定所有集合的并集

srem key member [member…] 删除集合中一个或多个成员

zset有序集合

zset类型的数据本身是和set类型的数据一样是无序且不能重复的,但是在添加数据时需要为数据设置score分数,我们在查询数据时可以通过赋予数据的分数将数据按照一定顺序进行排列。

在这里插入图片描述

通常存储一些具有相同性质的数据,并且这些数据有一定的顺序。例如:微博上的热搜,是根据搜索人数进行排名显示的。

zadd key score member [score… member…] 向有序集合添加一个或多个成员

zrange key start stop [withscores] 通过索引区间返回有序集合中指定区间内的成员(默认为升序排列,使用zrevrange变为降序排列)

zincrby key increment member 有序集合中指定成员的分数加上增量increment

zrem key member [member…] 移除有序集合中的一个或多个成员

redis数据库通用命令的常用命令

redis的通用命令是不分数据类型的,所以一般是根据key进行操作的

keys pattern 查找所有符合给定模式(pattern)的key(通常使用keys *来查询所有的数据)

exists key 检查给定key是否存在

type key 返回key所存储值的类型

del key 该命令用于在key存在时删除key 可以删除多个

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

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

相关文章

tableau基础学习1:数据源与绘图

文章目录 读取数据常用绘图方法1. 柱状图2. 饼图3. 散点图4. 热力图 第一部分是一些较容易上手的内容,以及比较常见的可视化内容,包括:柱状图、饼图、散点图与热力图 读取数据 打开界面后,选择数据源之后就可以导入数据&#xf…

【操作记录】CLion 中引入 Gurobi 并使用 C++ 编程

文章目录 一、前言二、具体操作2.1 创建项目2.2 修改编译工具2.3 修改 CMakeLists.txt2.4 修改 main.cpp2.5 运行测试 一、前言 虽然C编程大部分人都会选择使用VS,但是作为 IDEA 的长期用户,我还是比较习惯 JetBrains 风格的编译器,所以就选…

Go测试之.golden 文件

Go测试中的.golden 文件是干什么用的?请举例说明 在Go语言中,.golden文件通常用于测试中的黄金文件(golden files)。黄金文件是在测试期间记录预期输出结果的文件。测试用例运行时,黄金文件用于比较实际输出与预期输出…

Autosar存储入门系列03_NVM状态机及读写存储调用逻辑

本文框架 0.前言1. NVM状态机介绍2. NVM读/写基本逻辑2.1 NVM读操作2.2 NVM写操作2.2.1 实时写2.2.2 下电写 2.3 NVM写入注意事项 0.前言 本系列是Autosar存储入门系列,希望能从学习者的角度把存储相关的知识点梳理一遍,这个过程中如果大家觉得有讲得不…

Go 第三方库引起的线上问题、如何在线线上环境进行调试定位问题以及golang开发中各种问题精华整理总结

Go 第三方库引起的线上问题、如何在线线上环境进行调试定位问题以及golang开发中各种问题精华整理总结。 01 前言 在使用 Go 语言进行 Web 开发时,我们往往会选择一些优秀的库来简化 HTTP 请求的处理。其中,go-resty 是一个被广泛使用的 HTTP 客户端。…

还在为Compose组件管理苦恼?Jetpack Compose的版本控制清单(BOM)扫除你的苦恼

还在为Compose组件管理苦恼?Jetpack Compose的版本控制清单(BOM)扫除你的苦恼 Jetpack Compose通过简化和提高效率,彻底改革了Android UI开发。其中一个有助于此的功能是Jetpack Compose版本控制清单(BOM)…

vue2 组件组成部分,组件通信,进阶语法

一、学习目标 1.组件的三大组成部分(结构/样式/逻辑) ​ scoped解决样式冲突/data是一个函数 2.组件通信 组件通信语法父传子子传父非父子通信(扩展) 4.进阶语法 v-model原理v-model应用于组件sync修饰符ref和$refs$nextTic…

3、当今的企业架构分析

3、当今的企业架构分析 3、分库分表水平拆分(MySQL集群) 因为一个数据库装不下了,需要分库分表,读写分离,主从复制,主节点M与从节点s组成了一个数据库的集群,组成了一个小的单元,前端…

Axure RP软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Axure RP是Axure公司开发的一款原型设计工具,广泛应用于产品设计和UI/UX设计领域。以下是Axure RP软件的主要特点和功能: 原型设计:Axure RP提供了丰富的界面元素和交互元素,用户…

django的简易的图书管理系统jsp书店进销存源代码MySQL

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 django的简易的图书管理系统 系统有1权限&#xff1a…

使用WebDriver采样器将JMeter与Selenium集成

第一步: 在JMeter中添加Selenium / WebDriver插件 第二步: 创建一条测试计划–添加线程组 添加配置元素 - jpgc - WebDriver Sampler 添加配置元素 - jpgc - Chrome Driver Config 并且添加监听器查看结果树 第三步: 下载 chromedriver…

时序预测 | MATLAB实现Attention-GRU时间序列预测(注意力机制融合门控循环单元,TPA-GRU)

时序预测 | MATLAB实现Attention-GRU时间序列预测----注意力机制融合门控循环单元,即TPA-GRU,时间注意力机制结合门控循环单元 目录 时序预测 | MATLAB实现Attention-GRU时间序列预测----注意力机制融合门控循环单元,即TPA-GRU,时…

煤矿皮带运输智能监控算法 opencv

煤矿皮带运输智能监控算法通过opencvpython深度学习算法网络模型,煤矿皮带运输智能监控算法实时监测皮带运输过程中的各种异常情况,如跑偏、撕裂、堆料异常等,一旦检测到异常情况,立即发出告警并采取相应的措施,以保障…

搭建开发环境-WSL+Ubuntu(一键搭建开发环境)

概述 所谓工欲善其事必先利其器,搭环境往往是开发过程中卡出很多初学者的拦路虎。 对于很多老鸟来说,很多东西都已经习惯成自然,也就没有刻意和初学者说。但对于很多初学者,却是受益良多。 这个系列,先从操作系统开始…

MySQL数据库——约束(概述、约束演示、外键约束、删除/更新行为)

目录 概述 约束演示 表格创建 验证 图形化界面约束 外键约束 概念 语法 外键删除/更新行为 总结 概述 概念:约束是作用于表中字段上的规则,用于限制存储在表中数据。目的:保证数据库中数据的正确、有效性和完整性。分类&#xff1…

有哪些常人不知道的赚钱方法?

在目前互联网时期,如果说还有什么挣钱方法让别人不知道,那一定是赚大钱或者违法乱纪的挣钱渠道。但是对于普通人而言,确实是有一些挣钱的方法不被其了解,我这里就介绍几个,供大家一起探讨。 第一个:知识变…

TCP/IP五层模型、封装和分用

1.网络通信基础2.协议分层OSI七层协议模型TCP/IP五层/四层协议模型【重点】 3. 封装&分用 1.网络通信基础 IP地址:表示计算机的位置,分源IP和目标IP;举个例子:买快递,商家从上海发货,上海就是源IP&…

爱奇艺数据湖实战 - 基于数据湖的日志平台架构演进

01 背景 为了满足公司内日志实时查询分析的需求,爱奇艺大数据团队自研了Venus日志服务平台,负责爱奇艺各服务日志的采集、存储、处理、分析等场景。早期采用基于ElasticSearch的存储分析架构,随着数据规模的不断扩大,出现了成本高…

C语言基础之——指针(上)

前言:小伙伴们又见面啦!本期内容,博主将展开讲解有关C语言中指针的上半部分基础知识,一起学习起来叭!!! 目录 一.什么是指针 二.指针类型 1.指针的解引用 2.指针-整数 三.野指针 1.野指针…

Day46|动态规划part08:139.单词拆分、多重背包理论基础、背包问题总结

139. 单词拆分 leetcode链接:力扣题目链接 视频链接:你的背包如何装满?| LeetCode:139.单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要…