Redis——快速入门

目录

Redis简介

安装配置(Windows)

GUI工具RedisInsight的使用

十大数据类型(5基本5高级)

字符串String

列表List

集合Set(S)

有序集合SortedSet(Z)

哈希Hash(H)

发布订阅模式

消息队列Stream(X)

地理空间Geospatial(GEO)

HyperLogLog(PF)

位图Bitmap(BIT)

位域BitField

事务

数据持久化

主从复制

哨兵模式


Redis简介

  • 官网:Redis 教程_redis教程

  • Remote DIctionary server是一个开源的基于内存的数据存储系统

  • 作用

    • 数据库DB缓存Cache

    • 消息队列MQ

    • ......

    • 最热门NoSQL数据库之一

  • Mysql

    • 基于磁盘IO,读写操作速度与内存相比非常慢

    • Redis:基于内存的数据存储系统

  • 使用方式

    • 命令行界面CLI(Command Line Interface)

    • 应用程序接口API(Application Programming Interface)

    • 图 形用户界面GUI(Graphical User Interface)

安装配置(Windows)

  1. WSL-安装Linux系统-安装Redis

  2. Docker-下载Redis镜像-运行Redis

  3. 安装文件-简单(but比较老的5.0版本)

    • MAC/Linux启动服务:redis-server

    • Windows:redis-server.exe

    • 启动客户端:redis-cli

GUI工具RedisInsight的使用

  • 优点

    • 更方便操作redis

    • 直观看到redis的内存使用情况

    • 自带所有命令的说明文档

    • 本地连接到远程的redis服务

十大数据类型(5基本5高级)

  • redis中的数据以键值对key-value存储

  • 默认使用字符串存储数据,二进制安全

字符串String
  1. 设置:set key value

  2. 取值:get key(区分大小写)

  3. 删除:del key

    • flushall:把数据库里面的键都删除掉(慎用)

  4. 判断是否存在:exists key

  5. 查找:keys+

    • *:所有

    • *me:以me结尾的键

  6. 登录:redis-cli --raw

    • 以原始的形式显示内容

    • 如果设置键值对用了中文,会以二进制的形式输出,所以要--raw

  7. 清空页面:clear

  8. 设置一个带有过期时间(释放内存,用户校对)的键值对

    • TTL key(Time to live):查看过期时间

    • expire key 10:设置过期时间10s

    • setex key 10 value:设置一个带有过期时间的键值对

    • setnx key value:只有当键不存在时才设置键的值,键存在则不做任何动作

列表List
  • 一般用来存储和操作一组有顺序的数据

  1. LPUSH key value1 [value2] :将一个或多个值插入到列表头部

  2. LRANGE key start stop:获取列表指定范围内的元素

    • start:0|stop:-1则可获取从第一个到最后一个

  3. RPOP key:移除并获取列表最后一个元素

    • 后面加个n:表示要删除的列表头部元素个数

  4. LLEN key:获取列表长度

  5. RPOPLPUSH source destination: 移除列表的最后一个元素,并将该元素添加到另一个列表并返回

    • 实现了一个最简单的先进先出队列

  6. LTRIM key start stop:列表只保留指定区间内的元素

集合Set(S)
  • 列表中的元素可以重复

  • set中的元素不可重复,不具有顺序

  1. SADD key member1 [member2]: 向集合添加一个或多个成员

  2. SISMEMBER key member:判断元素是否在集合中

  3. SREM key member1 [member2]:删除集合中一个或多个成员

  4. 集合运算:交集 并集 差集

有序集合SortedSet(Z)
  • 每个元素都会关联一个浮点类型的分数,从而对元素进行从小到大的排序

  • 元素唯一,但分数可重复

  1. ZADD key score1 member1 [score2 member2]: 向有序集合添加一个或多个成员,或者更新已存在成员的分数

  2. ZRANGE key start stop: 通过索引区间返回有序集合成指定区间内的成员

    • 0 -1:所有

    • 后+ [WITHSCORES] :同时显示分数

  3. ZSCORE key member:返回成员的分数值

  4. ZREVRANK key member:反转,有序集成员按分数值递减(从大到小)排序

  5. ZRANK key member:指定成员的索引

  6. ZREM key member :删除成员

哈希Hash(H)
  • 一个string类型的field和value的映射表(键值对集合)

  • 适合存储对象

  1. HSET key field value:将哈希表 key 中的字段 field 的值设为 value

     HSET person name lisiHSET person age 100
  2. HGET key field:获取指定字段的值

  3. HGETALL key:获取在哈希表中指定 key 的所有字段和值

  4. HDEL key field1 [field2]: 删除一个或多个哈希表字段

  5. HEXISTS key field:判断某个键值对是否存在

  6. HKEYS key:获取所有哈希表中的字段

  7. HLEN key:获取哈希表中字段的数量

发布订阅模式
  • 发送者(pub)发送消息,订阅者(sub)接收消息

  • 局限性:

    • 消息无法持久化

    • 无法记录历史信息

  1. SUBSCRIBE channel [channel]: 订阅一个或多个频道的信息

  2. PUBLISH channel message: 将信息发送到指定的频道

消息队列Stream(X)
  • 轻量级:解决发布订阅功能的局限性

  1. XADD key id field value:添加一条消息

    • id:*自动生成一个消息的id

  2. XLEN key:查看Stream中消息的数量

  3. XRANGE key start end [COUNT count]:查看消息中的详细内容

    • start-;end+:所有消息

  4. XDEL key id[id...]:删除消息

  5. XTRIM key MAXLEN | MINID [ = | ~ ] threshold [LIMIT count]

    • MAXLEN 0:删除所有消息

  6. XREAD COUNT count BLOCK milliseconds STREAMS key [key...] id [id...]:读取消息

    • COUNT 2:一次读取两条消息

    • BLOCK 1000:没有消息的话就阻塞1000ms(1s)

    • id

      • 0:表示从头开始读取

      • $|>:读取最新消息

  7. XGROUP CREATE key id | $ [MKSTREAM] [ENTRIESREAD entries-read]:创建消费者组

  8. XINFO GOURPS key:查看消费者组的信息

  9. XGROUP CREATECONSUMER key group consumer:添加消费者

  10. XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key id:读取消息(被消费)

地理空间Geospatial(GEO)
  • 存储地理位置信息的数据结构

  • 支持对地理位置进行各种计算操作

  1. GEOADD key [NX|XX] [CH] longitude latitude member:添加一个地理位置信息

     GEOADD city 116.405285 39.904989 beijing//经度纬度
  2. GEOPOS key member:获取某个位置的经纬度

  3. GEODIST key member1 member2:计算两个地理位置之间的距离

    • 默认单位为m

    • 想换算成km,则在后面加上km

  4. GEOSEARCH key frommember member | FROMLONGLAT longitude latitude :搜索指定范围内的成员

    • FROMLONGLAT

      • BYRADIUS 300km:圆形范围,半径

      • BYBOX:矩形范围

HyperLogLog(PF)
  • 一种用来做基数(一个集合中不计算重复元素的个数)统计的算法

  • 适合用来做一些对精确度要求不高,而且数据量非常大的统计工作

    • 统计网站的UV

    • 统计某个词的搜索次数

  1. PFADD key element [element ...]:添加指定元素到 HyperLogLog 中

  2. PFCOUNT key [key ...]:查看基数估算值

  3. PFMERGE key sourcekey [sourcekey ...]:合并 HyperLogLog

位图Bitmap(BIT)
  • 字符串类型的扩展:使用String类型来模拟一个Bit数组

  • 支持位运算:与 或 非

  • 应用场景:

    • 记录用户的签到情况

    • 在线状态

    • 有没有点赞

    • 等等

  1. SETBIT key offset value:设置某个偏移量的值

     SETBIT dianzan 0 1SETBIT dianzan 1 0
  2. SET key value

     SET dianzan "\xF0"
    • 16进制可以一次性设置多个位的值

  3. GETBIT key offset:获取点赞的每一位值

  4. BITCOUNT key [start end[BYTE|BIT]]:统计数量

  5. BITPOS key bit [start end[BYTE|BIT]]:用来获取某个key里面第一个出现0或者1的位置

位域BitField
  • 将很多小的整数存储到一个较大的位图中

    • 更加高效地使用内存

  • 例子

    • 开发了一个游戏,可以利用位域来记录每个玩家在游戏中的一些关键信息(金钱、等级、是否在线等)

  1. BITFIELD key [GET encoding offset | [OVERFLOW WRAP | SATLEATL]:设置

    • 将get改成set:获取

  2. GET key:查看内存中现在的情况

事务

  • 可以一次执行多个任务

    • 某一个命令执行失败,后面的命令依然执行

  • MULTI:用于开启一个事务

    • 事务开启后,所有的命令都会被放入到一个队列中

  • EXEC:执行事务中的所有命令

  1. MULTI:事务块开始

  2. EXEC

数据持久化

  • redis是一个基于内存的数据库,没有持久化:服务器重启or断电,所有数据都会丢失

  • 两种持久化

    1. RDB(Redis Database)方式

      1. 适合备份

      2. 在指定时间间隔内,将内存中的数据快照写入磁盘。是某一个时间点上数据的完整副本

      3. 可通过配置文件中的save参数来配置

    2. AOF(Append Only File)方式

      1. 追加文件

      2. 执行写命令的时候,不仅会将命令写入到内存中,同时将命令写入到一个追加的AOF文件中

      3. 以日志的形式记录每一个写操作

      4. 开启AOF方式:在配置文件中将append only这个参数的值改为yes

主从复制

  1. 将一台redis服务器(主节点)的数据复制到其他的redis服务器(从节点)

    • 一对多

    • 单向复制

    • 主节点:写操作,异步发送

    • 从节点:读操作,主动更新

  2. 配置主从复制

    • 只需要修改从节点的配置(2种)

    1. 通过命令行执行命令

    2. 通过配置文件来修改

哨兵模式

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

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

相关文章

MQ保证消息的顺序性

在消息队列(MQ)中保证消息的顺序性是一个常见的需求,尤其是在需要严格按顺序处理业务逻辑的场景(例如:订单创建 → 支付 → 发货)。 一、消息顺序性被破坏的原因 生产者异步/并行发送:消息可能…

SPI驱动(二) -- SPI驱动程序模型

文章目录 参考资料:一、SPI驱动重要数据结构1.1 SPI控制器数据结构1.2 SPI设备数据结构1.3 SPI驱动数据结构 二、SPI 驱动框架2.1 SPI控制器驱动程序2.2 SPI设备驱动程序 三、总结 参考资料: 内核头文件:include\linux\spi\spi.h 一、SPI驱…

Gpt翻译完整版

上一篇文章收到了很多小伙伴的反馈,总结了一下主要以下几点: 1. 说不知道怎么调api 2. 目前只是把所有的中文变成了英文,如果想要做多语言还需要把这些关键字提炼出来成放到message_zh.properties和message_en.properties文件中&#xff0c…

图解MOE大模型的7个核心问题并探讨DeepSeekMoE的专家机制创新

原文地址:https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-mixture-of-experts #mermaid-svg-FU7YUSIfuXO6EVHa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-FU7YUSIfuXO6EVHa .error-icon{fill…

windows电脑上安装llama-factory实现大模型微调

一、安装环境准备 这是官方给的llama-factory安装教程,安装 - LLaMA Factory,上面介绍了linux系统上以及windows系统上如何正确安装。大家依照安装步骤基本能够完成安装,但是可能由于缺少经验或者相关的知识导致启动webUi界面运行相应内容时…

vscode+vue前端开发环境配置

目录 一、安装Vue二、使用vue新建项目 一、安装Vue 在node.js安装好之后, npm config set registry https://registry.npmmirror.com# 安装vue相关工具,webpack用来项目构建、打包、资源整合等。 npm install webpack -g# 安装vue-cli脚手架 npm insta…

基于javaweb的SpringBoot田径运动会管理系统设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

【Python编程】高性能Python Web服务部署架构解析

一、FastAPI 与 Uvicorn/Gunicorn 的协同 1. 开发环境:Uvicorn 直接驱动 作用:Uvicorn 作为 ASGI 服务器,原生支持 FastAPI 的异步特性,提供热重载(--reload)和高效异步请求处理。 启动命令: u…

Libgdx游戏开发系列教程(5)——碰撞反弹的简单实践

目录 水平滚动 水平滚动并反弹 四面滚动反弹 加个板子进行弹球 本篇简单以一个小球运动,一步步实现碰撞反弹的效果 本文代码示例以kotlin为主,且需要有一定的Libgdx入门基础 注:下面动态图片看着有些卡顿,是录制的问题,实际上运行时很流畅的 水平滚动 简单起见,我们通过S…

kan pinn

本文介绍了两种主要的 PINNs 结构,分别用于解决数据驱动的偏微分方程求解和数据驱动的偏微分方程发现问题。两种结构都采用了深度前馈神经网络,并使用了双曲正切激活函数。 1. 连续时间模型: 用于数据驱动求解: 包含两个神经网络…

【C++】vector(上):vector的常用接口介绍

文章目录 前言一、vector的介绍二、vector的常用接口介绍1.vector类对象的常见构造2.vector iterator 的使用3.vector类对象的容量操作3.1 size、capacity 和 empty的使用3.2 reserve的使用3.3 resize的使用 4.vector类对象的访问(包含data:返回底层数组…

【大模型】Llama 3.2 大语言模型初探:模型权重下载

文章目录 一、简介二、权重下载2.1 方法一:Meta 官网申请下载2.2 方法二:使用 hugging face 下载 一、简介 Llama(Large Language Model Meta AI)是 Meta(原 Facebook)开发的一系列开源大型语言模型。它的目…

python量化交易——金融数据管理最佳实践——使用qteasy大批量自动拉取金融数据

文章目录 使用数据获取渠道自动填充数据QTEASY数据拉取功能数据拉取接口refill_data_source()数据拉取API的功能特性多渠道拉取数据实现下载流量控制实现错误重试日志记录其他功能 qteasy是一个功能全面且易用的量化交易策略框架, Github地址在这里。使用它&#x…

基于SpringBoot的在线骑行网站的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

AORO P9000 PRO三防平板携手RTK高精度定位,电力巡检效率倍增

电网系统覆盖幅员辽阔,每年因设备故障导致的巡检耗时超过百万工日。传统巡检模式受限于定位误差、设备防护不足和作业效率低下三大核心痛点,亟需智能化工具的突破性革新。为了满足这一需求,遨游通讯推出AORO P9000 PRO三防平板,以…

Harbor端口更改||Harbor端口映射

Harbor端口更改|Harbor端口映射 目标:将端口更改为8930 前言 [rootk8s-node1 harbor]# ls common common.sh docker-compose.yml harbor.v2.5.0.tar.gz harbor.yml harbor.yml.tmpl install.sh LICENSE prepare如上是Harbor的文件目录 更改harbor.yml文件…

飞算JavaAI编程工具集成到idea中

AI插件介绍 飞算AI的插件下载地址,里边也有安装步骤: JavaAI 以上图是不是看着很牛的样子,一下成为高手确实说的太夸张了点, 一键生成后端JavaWeb项目还是挺方便的。 飞算JavaAI插件安装 Idea->>file->>setting-&…

51c自动驾驶~合集53

我自己的原文哦~ https://blog.51cto.com/whaosoft/13431196 #DriveTransformer 上交提出:以Decoder为核心的大一统架构写在前面 & 笔者的个人理解 当前端到端自动驾驶架构的串行设计导致训练稳定性问题,而且高度依赖于BEV,严重限…

Pytorch系列教程:模型训练的基本要点

PyTorch是一个开源的机器学习库,由于其灵活性和动态计算图而迅速流行起来。在PyTorch中训练模型是任何数据科学家或机器学习工程师的基本技能。本文将指导您完成使用PyTorch训练模型所需的基本步骤。 总体说明 模型训练流程主要包括数据准备、网络构建、优化配置及…

NVIDIA(英伟达) GPU 芯片架构发展史

GPU 性能的关键参数 CUDA 核心数量(个):决定了 GPU 并行处理能力,在 AI 等并行计算类业务下,CUDA 核心越多性能越好。 显存容量(GB):决定了 GPU 加载数据量的大小,在 AI…