这才是你想了解的Redis

news2024/11/26 23:15:59

文章简介
redis作为一个基于内存的数据结构存储系统,由于它的灵活性和可拓展性强,在我们日常开发中经常被用作数据库、缓存或者消息代理。本文就从Redis的基本部署使用说到Redis的集群、锁和消息对列

Redis基本使用

一、安装

下载地址:https://github.com/tporadowski/redis/releases
选择下载安装包或者安装程序
在这里插入图片描述
在安装目录下找到redis-server.exe运行即可启动Redis服务

二、Redis键命令

Redis键命令就是对已存储的键值对进行增删改查的命令

1、查询键

EXISTS key  //判断键是否存在
  • key存在,则返回1

  • key不存在,则返回0

KEYS pattern  //查找键
  • 用于按照指定的模式pattern 查找所有的key
  • KEYS * :表示匹配查找数据库中的所有key
  • kEYS r?dis :表示匹配 ?位置,任何一个字母,?仅代表任意一个字母,如:redis
  • kEYS r*dis:表示匹配 位置,任何零个、一个或多个字母、 代表零个或多个,如:rdis、redis、reedis
  • KEYS r[ae]dis :表示匹配radis 和 redis ,不会匹配别的,只会匹配这两种

2、修改键

RENAME key 新的键名  //修改键的名称
  • 将key 的名称修改成新的键名
  • 若key不存在,返回error
  • 若新键名存在,则覆盖

3、删除键

DEL [key...]  //删除一个或多个键
  • key若不存在,则忽略

三、Redis客户端

常用的Redis客户端有redis desktop managerAnother Redis Desktop ManagerRedisInsight,其中后面两个比较推荐,RedisInsight界面比较美观,但是美中不足的是没法模糊搜索。

四、SpringBoot整合Redis

依赖如下:

  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
      <version>2.7.9</version>
  </dependency>

  <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-pool2</artifactId>
      <version>2.11.1</version>
  </dependency>
  
  <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.11</version>
  </dependency>

application.yml配置

spring:
  redis:
    database: 0  # Redis数据库索引(默认为0)
    host: localhost # Redis服务器地址
    port: 6379  # Redis服务器连接端口
    password:   # Redis服务器连接密码(默认为空)
    lettuce:
      pool:
       max-active: 8  # 连接池最大连接数(使用负值表示没有限制) 默认 8
       max-wait: -1   # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
       max-idle: 8    # 连接池中的最大空闲连接 默认 8
       min-idle: 0    # 连接池中的最小空闲连接 默认 0

Redis模式

Redis有单机模式主从模式哨兵模式集群模式

  • 单机模式:优点:操作简单、成本低、不需要同步数据;缺点:可靠性低,服务掉线没法及时补救。
  • 主从模式:优点:

1、Redis主从模式

在生产环境中,如果只使用一个Redis服务,在出现服务出现问题掉线时,等到问题修复重启,时间就拖得太长了。这时候如果是使用的主从模式,在主库挂掉后,直接让相同配置的从库接管,系统又能正常运行了。Redis主从模式配置如下:

  1. 在同一个Redis程序下建两份一样的配置文件,命名为master.confslave.conf
  2. 其中master.confport6379,则slave.conf中的port设置为6380 slaveof 127.0.0.1:6379
  3. 启动主从Redis
    查看运行情况
telnet localhost 6379 telnet localhost 6380
role:master
-------------
role:slave
master_host:127.0.0.1
master_port:6379

2、Redis哨兵模式(sentinel)

Redis主从模式虽然在主服务宕机后可以直接替换从服务,不过这需要手动操作,而使用哨兵模式则相当于有一个哨兵在帮你监控Redis服务,主库宕机后,会根据规则推选出一个从库来顶替主服务,从而实现系统正常运行。
在这里插入图片描述

  1. 下面配置三个Redis,一个主两个从,一个哨兵
mkdir redis-sentinel
cd redis-sentinel
cp redis/path/conf/redis.conf path/to/redis-sentinel/master.conf
cp redis/path/conf/redis.conf path/to/redis-sentinel/slave1.conf
cp redis/path/conf/redis.conf path/to/redis-sentinel/slave2.conf
touch sentinel.conf

  1. 设置主从
vim master.conf
port 63791

vim slave1.conf
port 63792
slaveof 127.0.0.1 63791

vim slave2.conf
port 63793
slaveof 127.0.0.1 63791

vim sentinel.conf
daemonize yes
port 26379
# 其中mastername为主节点名字,末尾的1表示在推举主节点的时候该端口在sentinel同意的情况下可升级为master
sentinel monitor mastername 127.0.0.1 63793 1   

  1. 启动Redis
redis-server path/to/redis-sentinel/master.conf
redis-server path/to/redis-sentinel/slave1.conf
redis-server path/to/redis-sentinel/slave2.conf

redis-server path/to/redis-sentinel/sentinel.conf --sentinel

Redis集群

前面的Redis哨兵模式虽然在主从模式的基础上加上了监控的哨兵,可以自动切换主节点,但是依然是单点Redis,依旧是向一个Redis写数据,从库做备份。在日常生产环境中,单点Redis并发有限,遇到数据量大的情况容易降低性能,这时候我们就需要一个在多节点之间共享数据的工具,那就是Redis cluster,也就是Redis集群。Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令。

  1. 根据Redis官方文档,因为至少需要三个主节点,所以我们需要启动至少六个Redis服务,配置如下
主:master1   从 slave1   slaveof master1
主:master2   从 slave2   slaveof master2
主:master3   从 slave3   slaveof master3


mkdir redis-cluster
cd redis-cluster
mkdir master1   到 slave3   6个文件夹
cp redis.conf 到 master1 ... slave3   
修改端口
分别配置3组主从关系

  1. 启动Redis集群
redis-6.2.6/src/redis-cli --cluster create 127.0.0.1:6371 127.0.0.1:6372 127.0.0.1:6373 127.0.0.1:6374 127.0.0.1:6375 127.0.0.1:6376 --cluster-replicas 1

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

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

相关文章

mySql 储存过程 多个结果返回解析

当需要查询复杂的数据模型并返回多个结果集时&#xff0c;使用 MySQL 存储过程可以有效地优化性能。同时&#xff0c;在开发中使用 Mybatis 可以方便地调用 MySQL 存储过程并获取多个结果集。本文将介绍如何在 Mybatis 中调用 MySQL 存储过程&#xff0c;并获取多个结果集。 1、…

Java并发之原子类

一、原子类简介 1 什么是原子类 Java中提供了一些原子类&#xff0c;原子类包装了一个变量&#xff0c;并且提供了一系列对变量进行原子性操作的方法。原子性的意思是对于一组操作&#xff0c;要么全部执行成功&#xff0c;要么全部执行失败&#xff0c;不能只有其中某几个执…

基础知识学习---牛客网C++面试宝典(三)C/C++基础之面向对象

1、本栏用来记录社招找工作过程中的内容&#xff0c;包括基础知识学习以及面试问题的记录等&#xff0c;以便于后续个人回顾学习&#xff1b; 暂时只有2023年3月份&#xff0c;第一次社招找工作的过程&#xff1b; 2、个人经历&#xff1a; 研究生期间课题是SLAM在无人机上的应…

测试新手百科:Postman简介、安装、入门使用方法详细攻略!

本文关键词&#xff1a;Postman基础 目录 一、Postman背景介绍 二、Postman的操作环境 三、Postman下载安装 四、Postman的基础功能 五、接口请求流程 六、管理用例—Collections 七、身份验证Authentication 一、Postman背景介绍 用户在开发或者调试网络程序或者是网…

【答题】在线答卷-答题系统的微信小程序开发流程详解

用死记硬背的方法学习的学生&#xff0c;面对桌上堆积成厚厚的书本&#xff0c;是否感觉鸭梨山大呢&#xff0c;想着教育却面临着学习成本不小问题&#xff0c;是否感觉各种不便呢&#xff0c;如果对编程代码有感兴趣&#xff0c;不妨试试做一个自己的在线答题系统&#xff0c;…

有效性常见标志词

有效性常见标志词 混淆概念常见标志词 &#xff08; 1 &#xff09; 既然…那么… &#xff08; 2 &#xff09; 也就是说… &#xff08; 3 &#xff09; 很显然… &#xff08; 4 &#xff09; 因为A 就是B…所以… &#xff08; 5 &#xff09; 某主体A 是 &#xff0c;…

低代码01之构建项目框架

目录 低代码之构建框架11&#xff1a;项目初始化2&#xff1a;src / data.json 数据 &#xff08; 容器大小与渲染的表单数据 &#xff09;3&#xff1a;App.vue ( 导入editor组件传递data.json之中的数据与 向下提供组件配置数据config )4&#xff1a;src / packages / editor…

我记不住的那些C语言的二维数组的函数传参

背景&#xff1a; 最近在复习数据结构和算法&#xff0c;顺带刷刷题&#xff0c;虽然很长时间不刷题了但还是原来熟悉的味道&#xff0c;每一次重学都是加深了上一次的理解。本次我们看一下如何将C语言的二维数组进行函数传参&#xff0c;C语言实现。 其实这个比较简单&#x…

springboot项目使用proguard配置代码混淆

springboot项目使用proguard配置代码混淆 代码混淆是一些软件开发过程中必不可少的步骤。 常用的代码混淆技术有 proguard maven plugin , yguard maven plugin, procyon maven plugin, dex maven plugin . 这些代码混淆技术大同小异&#xff0c;都是对maven打包生成class时进…

补充知识点

这里写目录标题 进制转换Java内置的进制转换介绍具体代码 有符号数据表示法整数强制转换之数据溢出浮点数进制转换浮点数储存 进制转换 Java内置的进制转换 介绍 也就是常用API里Integer的静态方法 具体代码 注意 最后一个方法&#xff0c;返回的是基于第二个参数为基数的第…

大模型部署实战(三)——ChatGLM-6B

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

SSR渲染-初识Nuxt-01

SSR服务端渲染 SSR服务端渲染&#xff1a;在后端将html页面处理好&#xff0c;前端直接展示&#xff08;可以解决为后端给你传了一个html脚本&#xff0c;全段渲染&#xff09; 为什么要有SSR服务端渲染&#xff1f; 可以解决单页面首屏加载慢的问题&#xff0c;同时有利于用…

在线分享怎么多接口批量查询快递信息

做物流和电商行业的小伙伴应该都知道&#xff0c;大量快递集中发出后&#xff0c;我们要做的就是及时查询和跟踪快递单号&#xff0c;这样能够有效避免快递发错或快递丢失等情况出现&#xff0c;小编今天给大家安利一款全自动批量查询跟踪快递单号的辅助工具&#xff0c;它支持…

【C++/嵌入式笔试面试八股】二、21.分层模型 | HTTP

分层模型 01.画出OSI和TCP/IP协议栈的对应关系 对应关系记忆2113 02.什么是OSI七层模型?每层列举2个协议。❤️ OSI七层模型及其包含的协议如下 物理层: 传输单位为bit 功能:通过物理媒介透明的传输比特流,确定机械及电气规范 主要包括的协议为:IEE802.3 CLOCK RJ45 数据链…

[学习笔记] [机器学习] 10. 支持向量机 SVM(SVM 算法原理、SVM API介绍、SVM 损失函数、SVM 回归、手写数字识别)

视频链接数据集下载地址&#xff1a;无需下载 学习目标&#xff1a; 了解什么是 SVM 算法掌握 SVM 算法的原理知道 SVM 算法的损失函数知道 SVM 算法的核函数了解 SVM 算法在回归问题中的使用应用 SVM 算法实现手写数字识别器 1. SVM 算法简介 学习目标&#xff1a; 了解 …

路径规划算法:基于阿基米德优化优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于阿基米德优化优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于阿基米德优化优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用…

Spring Bean-生命周期

三连支持 一起鼓励 一起进步 Bean生命周期 文章目录 一、生命周期1.Bean中配置生命周期2.实现InitializingBean和DisposableBean接口3.PostConstruct & PreDestroy4.BeanPostProcessor接口 二、执行过程三、源码中使用的BeanPostProcessor1.以ApplicationContextAwareProce…

【Flutter】Flutter 如何实现主题 Theme 切换

文章目录 一、引言二、Flutter 中的主题&#xff08;Theme&#xff09;和主题数据&#xff08;ThemeData&#xff09;三、如何在 Flutter 中创建自定义主题四、在 Flutter 中实现主题切换五、完整的代码示例六、总结 一、引言 大家好&#xff0c;欢迎阅读这篇文章。今天我们要…

Android——发送和接收广播

实验名称&#xff1a; 发送和接收广播 实验目的&#xff1a; &#xff08;1&#xff09;能创建广播接收者&#xff0c;实现广播的注册 &#xff08;2&#xff09;能自定义广播&#xff0c;发送和接收广播 实验内容及原理&a…

uni-app 使用axios发请求 运行到微信开发者工具报错 Adapter “http‘ is not available in the build

场景 最近在使用uni-app开发H5移动端&#xff0c;跟往常一样使用axios发请求&#xff0c;做一些全局的请求拦截响应拦截操作 uni-app数据存储&#xff0c;uni-ui组件开发&#xff0c;配置axios&#xff0c;vuex。配置了vue.config.js文件做跨域操作 运行到谷歌浏览器一切正常…