Redis——快速入门

news2025/3/6 15:31:53

目录

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 lisi
     HSET 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 1
     SETBIT 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.coloradmin.cn/o/2310589.html

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

相关文章

LLM 模型 Prompt 工程

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

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…

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…

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 个 正整数 的数组…

【最大半连通子图——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模型不仅在代码生成方面表现出色,其强大的自然语言处理能力也…