当前位置: 首页 > article >正文

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. 通过配置文件来修改

哨兵模式

相关文章:

Redis——快速入门

目录 Redis简介 安装配置(Windows) GUI工具RedisInsight的使用 十大数据类型(5基本5高级) 字符串String 列表List 集合Set(S) 有序集合SortedSet(Z) 哈希Hash(H) 发布订阅模式 消息队列Stream(X) 地理空间Geospatial(GEO) HyperLogLog(PF) …...

LLM 模型 Prompt 工程

目录 1、Prompt 基础概念 2、Prompt 主要构成 3、Prompt 相关技术 3.1、思维链 3.2、自洽性 3.3、思维树 1、Prompt 基础概念 Prompt 工程是通过设计和优化自然语言提示(Prompt),引导LLM生成符合特定任务需求的输出的技术。其核心目标是…...

10个实用IntelliJ IDEA插件

精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 以下是为提升开发效率推荐的10个实用IntelliJ IDEA插件,涵盖代码质量、效率工具及热门框架支持: 一、代码质量与规范 SonarLint 实时…...

Vue中实现大文件的切片并发下载和下载进度展示

Vue中实现大文件的切片下载 切片下载需要后端提供两个接口,第一个接口用来获取当前下载文件的总切片数,第二个接口用来获取具体某一个切片的内容。 界面展示 数据流展示 代码 接口 // 切片下载-获取文件的总切片数 export function getChunkDownload…...

开源表单、投票、测评平台部署教程

填鸭表单联合宝塔面板深度定制,自宝塔面板 9.2 版本开始,在宝塔面板-软件商店中可以一键部署填鸭表单系统。 简单操作即可拥有属于自己的表单问卷系统,快速赋能业务。即使小白用户也能轻松上手。 社区版体验地址:https://demo.tduckapp.com/home 前端项目地址: tduck-fro…...

GaussDB性能调优技术指南

​一、性能调优核心目标 ​降低响应时间:缩短单次查询或事务的处理时间(如从秒级优化到毫秒级)。 ​提高吞吐量:支撑更高并发请求(如从千次/秒提升到百万次/秒)。 ​资源高效利用:减少 CPU、…...

【后端开发】go-zero微服务框架实践(goland框架对比,go-zero开发实践,文件上传问题优化等等)

【后端开发】go-zero微服务框架实践(goland框架对比,go-zero开发实践,文件上传问题优化等) 文章目录 1、go框架对比介绍2、go-zero 微服务开发实践3、go-zero 文件上传问题优化 1、go框架对比介绍 国内开源goland框架对比 1 go-…...

C#—csv文件格式操作实例【在winform表格中操作csv】

C#—csv文件格式操作实例【在winform表格中操作csv】 实例一 实例效果 当在winform界面中点击读取按钮时 将csv中的所有数据读取出来放置在datagridview控件,可以在datagridview控件中编辑数据,当点击保存按钮时 将datagridview控件中的所有数据存储在…...

一周学会Flask3 Python Web开发-WTForms表单验证

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们可以通过WTForms表单类属性的validators属性来实现表单验证。 常用的WTForms验证器 验证器说明DataRequired(messageNo…...

23种设计模式一览【设计模式】

文章目录 前言一、创建型模式(Creational Patterns)二、结构型模式(Structural Patterns)三、行为型模式(Behavioral Patterns) 前言 设计模式是软件工程中用来解决特定问题的一组解决方案。它们是经过验证…...

GPIO及其应用

GPIO及其应用 文章目录 GPIO及其应用1.GPIO概括2.GPIO工作基本结构3.GPIO寄存器3.1寄存器总览3.2寄存器功能3.3BIT简写的代表 4.GPIO的电气特性4.1拉电流与灌电流4.2驱动大功率负载4.3电平逻辑兼容性 5.LED闪烁(实操)6.LED交替闪烁(实操)7.开关控制LED灯…...

NO1.C++语言基础|四种智能指针|内存分配情况|指针传擦和引用传参|const和static|c和c++的区别

1. 说⼀下你理解的 C 中的四种智能指针 智能指针的作用是管理指针,可以避免内存泄漏的发生。 智能指针就是一个类,当超出了类的作用域时,就会调用析构函数,这时就会自动释放资源。 所以智能指针作用的原理就是在函数结束时自动释…...

Vue 关于如何在vue中实现跨域请求问题

📚首先,让我们了解一下什么是跨域。当一个请求的URL的协议、域名、端口三者中任意一个与当前页面的URL不同,就称为跨域请求。 🔒为什么会出现跨域问题呢?这是因为浏览器的同源策略限制。同源策略是浏览器最核心的安全…...

毕业项目推荐:基于yolov8/yolov5/yolo11的暴力行为检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示:功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出(xls格式)功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…...

算法随笔_64: 含特定字母的最小子序列

上一篇:算法随笔_63: 子数组范围和-CSDN博客 题目描述如下: 给你一个字符串 s ,一个整数 k ,一个字母 letter 以及另一个整数 repetition 。 返回 s 中长度为 k 且 字典序最小 的子序列,该子序列同时应满足字母 letter 出现 至少 repetitio…...

red hat系统离线部署Deepseek

一个人在单位离线部署踩了不少坑,记录一下 模型准备 1.huggingface下载gguf文件,将文件放到相应目录(例如E:/AI文件夹) 2.在文件夹内用文本建一个文件,命名Modelfile(删除txt后缀) 3.用文本编辑器打开Modelfile,在文本内输入 fr…...

torch.einsum 的 10 个常见用法详解以及多头注意力实现

torch.einsum 是 PyTorch 提供的一个高效的张量运算函数,能够用紧凑的 Einstein Summation 约定(Einstein Summation Convention, Einsum)描述复杂的张量操作,例如矩阵乘法、转置、内积、外积、批量矩阵乘法等。 1. 基本语法 tor…...

【DeepSeek】一文详解GRPO算法——为什么能减少大模型训练资源?

GRPO,一种新的强化学习方法,是DeepSeek R1使用到的训练方法。 今天的这篇博客文章,笔者会从零开始,层层递进地为各位介绍一种在强化学习中极具实用价值的技术——GRPO(Group Relative Policy Optimization&#xff09…...

C++基础系列【19】运算符重载

博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇&#x1f…...

大数据环境(单机版) Flume传输数据到Kafka

文章目录 前言一、准备二、安装三、配置环境变量四、修改配置4.1、kafka配置4.2、Flume配置 五、启动程序5.1、启动zk5.2、启动kafka5.3、启动flume 六、测试6.1、启动一个kafka终端,用来消费消息6.2、写入日志 其他 前言 flume监控指定目录,传输数据到…...

Ollama 框架本地部署教程:开源定制,为AI 项目打造专属解决方案!

Ollama 是一款开源的本地大语言模型(LLM)运行框架,用于管理和运行语言模型。具有以下核心特点: 开源可定制:采用 MIT 开源协议,开发者能自由使用、阅读源码并定制,可根据自身需求进行功能扩展和…...

开发环境搭建-03.后端环境搭建-使用Git进行版本控制

一.Git进行版本控制 我们对项目开发就会产生很多代码,我们需要有效的将这些代码管理起来,因此我们真正开发代码前需要把我们的Git环境搭建好。通过Git来管理我们项目的版本,进而实现版本控制。 首先我们使用Git创建本地仓库,然后…...

[Lc(2)滑动窗口_1] 长度最小的数组 | 无重复字符的最长子串 | 最大连续1的个数 III | 将 x 减到 0 的最小操作数

目录 1. 长度最小的字数组 题解 代码 ⭕2.无重复字符的最长子串 题解 代码 3.最大连续1的个数 III 题解 代码 4.将 x 减到 0 的最小操作数 题解 代码 1. 长度最小的字数组 题目链接:209.长度最小的字数组 题目分析: 给定一个含有 n 个 正整数 的数组…...

互联网时代如何保证数字足迹的安全,以防个人信息泄露?

用户在网络上所做的几乎所有事情,包括浏览、社交媒体活动、搜索查询、在线订阅,甚至购物,都会留下一条数据线索,这些数据可用于创建用户在线身份的详细档案。如果这些信息暴露,恶意行为者可能会利用它们将用户置于各种…...

海康摄像头接入流媒体服务器实现https域名代理播放

环境 操作系统:Ubuntu 22.04流媒体服务器:srs 官网安装教程srs开启GB28181协议 官网开启教程进行海康摄像头的配置 官网配置教程srs使用systemctl实现开机自启 官网配置教程 nginx配置说明 server {listen 80;server_name a.com;return 301 https://$…...

【C++设计模式】第五篇:原型模式(Prototype)

注意:复现代码时,确保 VS2022 使用 C17/20 标准以支持现代特性。 克隆对象的效率革命 1. 模式定义与用途​ ​ 核心思想​ ​原型模式:通过复制现有对象​(原型)来创建新对象,而非通过new构造。​关键用…...

51单片机课综合项目

1、按键控制蜂鸣器实验 1、实验现象:下载程序后,按下K1键蜂鸣器发声一次,按下K2键,蜂鸣器连续发声,再次按下K2键,发声取消 2、使用到的外设模块:蜂鸣器模块beep 独立按键模块 key 3、编程框架(…...

【最大半连通子图——tarjan求最大连通分量,拓扑排序,树形DP】

题目 分析 最大连通分量肯定是满足半连通分量的要求,因此tarjan。 同时为了简化图,我们进行缩点,图一定变为拓扑图。 我们很容易看出,只要是一条不分叉的链,是满足条件的。 于是我们按照拓扑序不断树形DP 建边注意…...

一周学会Flask3 Python Web开发-在模板中渲染WTForms表单视图函数里获取表单数据

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 为了能够在模板中渲染表单,我们需要把表单类实例传入模板。首先在视图函数里实例化表单类LoginForm,然…...

DeepSeek R1助力,腾讯AI代码助手解锁音乐创作新

目录 1. DeepSeekR1模型简介2. 歌词创作流程2.1 准备工作2.2 歌词生成技巧 3. 音乐制作环节3.1 主流AI音乐生成平台 4. 歌曲欣赏5. 总结展望 1. DeepSeekR1模型简介 腾讯AI代码助手最新推出的DeepSeekR1模型不仅在代码生成方面表现出色,其强大的自然语言处理能力也…...