高效的NoSql数据库——Redis

2023-11-02

1. 关系型数据库和非关系型数据库

1.1 关系型数据库-sql

  • 操作数据必须要使用sql语句
  • 数据存储在磁盘
  • 存储的数据量大
  • 举例:mysql、oracle、sqlite(文件数据库)、sql server

1.2 非关系型数据库-nosql

  • 操作不适用sql语句,使用命令
  • 数据默认存储在内存:速度快;效率高;存储的数据量小
  • 不需要数据库表:以键值对的方式存储的

1.3 二者的联系

在实际项目开发中,关系型数据库和非关系型数据库往往组合使用,发挥其各自的优势。

  1. 所有的数据默认存储在关系型数据库中
  2. 客户端访问服务器,有一些数据,服务器需要频繁的查询
    • 服务器首先将数据从关系型数据库中读出->第一次,将数据写入到redis
    • 客户端第二次
  3. 涉及到数据的修改,需要同步redis和关系型数据库中的数据->服务器完成

2. Redis

2.1 Redis简介

Redis是一个高性能的Key-Value数据库,它默认将数据存储在内存中,实现数据的高效存取,通常作为缓存使用。

  • redis中数据的组织格式:键值对
    1. key:必须是字符串-“hello”
    2. value:可选的(String、List、Set、Hash )
  • redis常用的数据类型
    1. String类型-字符串
    2. List类型-存储多个字符串的
    3. Set类型-元素不重复,数据是无序的(区别于STL中的set)
    4. SortedSet-排序Set,集合中的每个元素分为两部分[分数,成员]->[66, “tom”],默认按照分数升序排列
    5. Hash类型-key-value的数据组织方式,查询快

2.2 Redis常用命令

redis-server:默认方式启动redis服务器
redis-server [confFileName]:根据配置文件的设置启动redis服务器
redis-cli:启动redis客户端并默认连接本机服务器,默认绑定6379端口
redis-cli -p [端口号]:连接本机指定端口的redis
redis-cli -h [IP地址] -p [端口号]:连接远程主机的指定端口的redis
ping [MSG]:检测客户端是否连接上服务器
shutdown:通过客户端关闭redis服务器

  • String类型
key -> string
value -> string

# 1.设置一个键值对->string-string
set key value
# 2.通过key得到value
get key
# 3.同时设置一个或多个key-value对
mset key value [key value ...]
# 4.返回所有(一个或多个)给定key的值
mget key [key ...]
# 5.追加
# 如果key已经存在并且是一个字符串,append命令将value追加到key原来的值的末尾
# 如果key不存在,append就简单地将给定key设为value,就像执行 set key value 一样。
append key value 

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
strlen key:返回key所存储的字符串的长度
decr key:将key中存储的数字值减一,前提:value必须是数据字符串,例如“123”
incr key:将key中存储的数字值加一,前提同上
decrby key cout decrement:将key所存储的值减去减量decrement
incrby key increment:将key所存储的值加去增量increment

  • List类型-存储多个字符串
# key-> string
# value -> list

# 1.将一个或多个 value 插入到列表 key 的表头
# 如果由多个value值,那么各个value值按从左到右的顺序依次插入到表头
# 如果key不存在,一个空列表会被创建并执行lpush操作
lpush key value [value ...]
# 2.将一个或多个 value 插入到列表 key 的表尾(最右边)
rpush key value [value ...]
# 3.list中删除元素
# 删除最左侧元素
lpop key
# 删除最右侧元素
rpop key
# 4.遍历  start->起始位置,0  stop->结束位置,-1 -2 -3...
lrange key start stop
# 5.通过下标得到对应位置的字符串
lindex key index

在这里插入图片描述在这里插入图片描述
llen:返回列表key的长度
lpushx key value:将value插入到列表key的表头,当且仅当key存在并且是一个列表
rpushx key value:将value插入到列表key的表尾,当且仅当key存在并且是一个列表
lrem key count value:根据count的值,移除列表中与参数value相等的元素。count > 0,从表头开始搜索,移除count个与value值相等的元素;count < 0, 从表尾开始搜索,移除count的绝对值个与value值相等的元素;count = 0,移除表中所有与value相等的元素

  • Set类型
# key-> string
# value -> set类型 { "string1""string2" ...}

# 1.将一个或多个member元素加入到集合key当中,已经存在与集合的member元素将被忽略(不可重复)
# 加入key不存在,则创建一个只包含member元素作成员的集合
# 当key不是集合类型时,返回一个错误
sadd key member [member ...]
# 2.遍历
smembers key
# 3.差集
sdiff key [key ...]
# 4.交集
sinter key [key ...]
# 5.并集
sunion key [key ...]
# 6.删除
# 移除集合key中的一个或多个member元素,不存在的member元素会被忽略
srem key member [member ...]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高效的NoSql数据库——Redis 的相关文章

  • 查询 mongodb 返回今天创建的文档

    我如何编写今天创建的结果文档的过滤器 我知道 ObjectId 有时间戳 我试过这个 db doc find id gte ObjectId getTimestamp getTime 我可以写吗 db doc find id getTime
  • Riak:如果目标被删除,链接会消失吗?

    当从商店中删除商品时 链接到现在丢失的商品的所有文档中的链接是否会自动删除 或者我们是否遇到过类似于 HTML 页面上损坏的链接的情况 不 链接不会自动删除 链接只是与对象一起存储的元数据 因此要查找链接到已删除对象的所有对象 您需要遍历整
  • NoSQL:如何根据经纬度检索“房子”?

    我有一个用于存储房地产的 NoSQL 系统 我在每栋房子的键值存储中拥有的一条信息是longitude and latitude 如果我想检索地理纬度 经度框中的所有房屋 如下面的 SQL SELECT from houses WHERE
  • Firebase 数据库结构 - 需要建议

    我知道这个问题可能被视为基于意见的问题 但是我认为值得讨论正确构建数据库的方法 我在 Swift 中开发 iOS 应用程序 并决定使用 firebase 作为我的后端服务 让我们从应用程序描述开始 该应用程序旨在为图书阅读体验提供跟踪和社交
  • 库存管理系统的 SQL 与 NoSQL

    我正在开发一个基于 JAVA 的网络应用程序 主要目的是拥有在多个称为渠道的网站上销售的产品的库存 我们将担任所有这些渠道的管理者 我们需要的是 用于管理每个渠道的库存更新的队列 库存表 其中包含每个通道上分配的正确快照 将会话 ID 和其
  • 使用 Django 会话存储登录用户

    我正在创建一个以 REST 为中心的应用程序 它将针对大多数特定于域的模型使用某种 NoSQL 数据存储 对于我打算围绕 REST 数据框架构建的主站点 我仍然希望对用户 计费信息和域数据模型范围之外的其他元数据使用传统的关系数据库 有人告
  • redis-cli 重定向到 127.0.0.1

    我在PC1上启动Redis集群 然后在PC2上连接它 当需要重定向到另一个集群节点时 它会显示Redirected to slot 7785 located at 127 0 0 1 但应该显示Redirected to slot 7785
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • Redis INCRBY 有限制

    我想知道是否有一种方法可以通过我的应用程序的单次往返在 Redis 中执行此操作 对于给定的键K 其可能值V是范围内的任意整数 A B 基本上 它有上限和下限 When an INCRBY or DECRBY发出命令 例如INCRBY ke
  • Spring Data Redis JedisConnectionException:流意外结束

    雷迪斯3 0 5Spring数据Redis 1 3 6绝地武士2 6 3 我们的 Web 应用程序通过 pub sub 从 Redis 接收数据 还以键 值对的形式在 Redis 上执行数据读 写 读 写发生在监听线程 独立监控线程和htt
  • 通过 StackExchange.Redis 连接到 Redis Servier

    我尝试使用以下方法制作一个测试项目Redis https redis io服务器 通过 Virtual Box 安装在 Linux Ubuntu 虚拟机上 Linux 机器通过 Virtual Box 的桥接适配器与本地网络连接 Virtu
  • Cassandra 集群 - 特定节点 - 特定表高丢弃突变

    我在生产中的压缩策略是 LZ4 压缩 但我将其修改为 Deflate 对于压缩更改 我们必须使用 nodetool Upgradesstables 强制升级所有 sstable 上的压缩策略 但是 一旦在集群中的所有 5 个节点上完成了 U
  • 在 sidekiq 上配置 redis 身份验证

    我想我错过了一些东西 因为我在文档中找不到如何编写 redis 实例的用户名和密码以与 sidekiq 一起使用 有没有办法做到这一点 或者是通过 ENV 变量 Sidekiq 将无法识别的 Redis 选项直接传递给 Redis 驱动程序
  • 无法启动redis.service:单元redis-server.service被屏蔽

    我在 ubuntu 16 04 上安装了 Redis 服务器 但是当我尝试使用启动redis服务时 sudo systemctl start redis 我收到消息 Failed to start redis service Unit re
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据
  • 如何在Redis中从hmset()切换到hset()?

    我收到弃用警告 即 Redis hmset 已弃用 请改用 Redis hset 但是 hset 采用第三个参数 我不知道是什么name应该是 info users 10 timestamp datetime utcnow strftime
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • StackExchange.Redis的正确使用方法

    这个想法是使用更少的连接和更好的性能 连接会随时过期吗 对于另一个问题 redis GetDatabase 打开新连接 private static ConnectionMultiplexer redis private static ID
  • 设计 Cassandra 数据模型的最佳实践是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 以及需要避免哪些陷阱 您有任何交易中断吗 例如 我听说导出 导入 Cassandra 数据非常困难 这让我想知道这是否会妨碍将生产数据
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc

随机推荐

  • 通过live555实现H264 RTSP直播

    转载自 http blog csdn net firehood article details 16844397 前面的文章中介绍了 H264视频通过RTMP流直播 下面将介绍一下如何将H264实时视频通过RTSP直播 实现思路是将视频流发
  • centos8 安装docker与(containerd.io与podman-manpages问题解决)及镜像加速

    docker安装 环境说明 windows系统安装virtualbox 并在virtualbox环境中centos8系统 如果以下操作都基于centos系统root用户执行的 不需要加在命令前面sudo 1 卸载老版本 sudo yum r
  • Linux 面试题

    1 什么是Linux的内核 作用是 Linux 内核是 Linux 操作系统的核心组件 它是操作系统的底层软件 负责管理计算机的硬件资源 并提供了一些基本的系统服务 内核是操作系统与硬件之间的桥梁 它处理系统中的进程调度 内存管理 设备驱动
  • Linux系统搜索某个目录下特定文件的方法(find)

    在Linux下搜索指定名称的文件的方法 可以用find命令 格式 find
  • idea快速上手指南

    安装 双击打开安装包 选择一个目录 最好不要中文和空格 然后选择桌面快捷方式 请选择64位 然后选择安装 开始安装 然后勾选安装后运行 Finish 首次配置 然后是UI界面选择 有白色和黑色两款 总有一款适合你 把不需要的组件禁用 插件暂
  • IDEA Tomcat 控制台乱码

    解决方案 找到 logging properties 文件 修改控制台日志处理器编码格式 找到java util logging ConsoleHandler encoding 将其值修改为 java util logging Consol
  • 机器学习笔记4 - 神经网络

    机器学习笔记4 神经网络 线性回归和逻辑回归都有一个缺点 当特征太多 计算负荷会很大 引入神经网络 在神经网络中 参数称为权重 weight 其中 x 1 x 2
  • 项目实训(一)前端框架的搭建

    目录 一 搭建前端框架 二 导入js和css样式框架 控制样式 三 初始化网页结构 一 router设置 二 index vue 三 导航栏 四 回到顶部按钮 一 搭建前端框架 首先选定使用的前端框架为Vue 在配置文件main js中导入
  • 【前端】ant-design-pro初体验

    什么是Ant Design Pro Ant Design Pro 是一个企业级中后台前端 设计解决方案 它秉承 Ant Design 的设计价值观 致力于在设计规范和基础组件的基础上 继续向上构建 提炼出典型模板 业务组件 配套设计资源 进
  • linux文件目录命令

    文件目录1 pwd 显示当前工作目录的绝对路径 print working directory ls 显示文件目录 a 显示所有的文件 l 以列表的形式显示 h 数据以xxxk的形式显示 F 对于是目录的文件后面加上 cd 切换到指定的目录
  • Windows网络编程基础(一)

    Table of Contents 准备工作 socket C S模式 源代码 服务端 Server cpp 客户端 Client cpp 源码分析 数据传输 关闭连接 准备工作 Windows网络编程一般是指 Windows Socket
  • Android Device Monitor运行报错解决方案

    我用的jdk17和jdk11的话 版本太高了 DDMS会报错 报错信息如下 SESSION 2023 08 27 21 27 08 420 eclipse buildId unknown java version 17 0 6 java v
  • 暗影精灵电脑 开机速度慢的解决方法

    文章目录 问题现象 发生机理 解决方案 问题现象 惠普暗影精灵笔记本在开机前有一个特别长的黑屏有背光的时间 过了这个时间才能看到暗影精灵的logo 表示Windows开始加载 这导致暗影精灵3笔记本的开机时间接近一分钟 这在SSD大行其道的
  • SpringCloud项目Nacos替换Eureka(一)

    Nacos替换Eureka记录 最近公司做各个系统的Eureka替换Nacos注册中心 因为各个系统以前规划问题 SpringCloud版本存在差异性 所以需要根据当前版本的SpringCloud对照SpringCloudAlibaba版本
  • Android单排上王者系列之Dagger2使用解析

    转自 http blog csdn net study zhxu article details 52169090 本篇文章已授权微信公众号 guolin blog 郭霖 独家发布 前言 现在Dagger2在项目中的使用越来越多 Dagge
  • Linux 系统部署

    通过VMware部署CENTOS系统环境 具体操作步骤如下 1 安装VMware后 以管理员的身份运行 2 在VMware中新建虚拟机 3 典型 自定义 选择自定义安装 4 虚拟机兼容性 默认下一步 5 安装来源 选择稍后安装操作系统 也可
  • scala中关于时间格式的转换

    scala中关于时间格式的转换问题 总结为以下三种常用情况 1 时间字符类型转Date类型 import java text SimpleDateFormat val time 2017 12 18 00 01 56 val newtime
  • ubuntu报错: - RemoveCaches (13: Permission denied)

    完整报错内容显示如下 Reading package lists Done E Could not open lock file var lib apt lists lock open 13 Permission denied E Unab
  • websocket与http优缺点

    最近在写一个英语学习APP 然而RZLS跟我说要我写Websocket文档 我琢磨着这些玩意都能用HTTP解决 为啥要用Websocket呢 于是查了一下资料 发现确实不用Websocket HTTP完全够了 这是参考文章 转载 https
  • 高效的NoSql数据库——Redis

    1 关系型数据库和非关系型数据库 1 1 关系型数据库 sql 操作数据必须要使用sql语句 数据存储在磁盘 存储的数据量大 举例 mysql oracle sqlite 文件数据库 sql server 1 2 非关系型数据库 nosql