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

Redis快速入门

文章目录

      • 0. Redis介绍
      • 1. Centos下Redis安装
      • 2. redis.conf配置文件介绍
      • 3. redis相关命令
      • 4.redis中发布订阅和事务
        • 4.1 发布订阅(Pub/Sub)
        • 4.2 事务
      • 5. redis封装系统服务
      • 6. 问题与解决
        • 6.1 启动Redis报错:Could not create Server TCP listening socket *:6379: bind: Address already in use
        • 6.2 Could not connect to Redis at 127.0.0.1:6379: Connection refused

0. Redis介绍

Redis(Remote Dictionary Server)
是一个开源的、使用ANSI C语言编写的 Key-Value 数据库。

  • Redis被称为远程字典服务,因为它提供了一种类似于字典的数据结构,但可以通过网络进行远程访问和操作。
    /

来源:
Redis出现的原因是作为缓存数据库,解决MySQL数据库在大量并发请求下的性能问题。

特点

1. 支持数据持久化

  • Redis是内存数据库,但从Redis 2.0版本开始,它引入了持久化机制。持久化是数据库系统的一个关键特性,它允许数据库在系统崩溃后能够恢复到崩溃前的状态。
    持久化方法:
    • 快照:是Redis的默认持久化方式。通过将数据写入磁盘,可以记录每一次对数据库的修改。当你重启Redis时,可以通过加载快照文件来恢复数据。
    • AOF(只追加文件):与快照方式不同,AOF持久化是记录每次修改数据库的命令,并在重启时逐个执行这些命令,从而恢复数据

2. 支持多种数据类型

  • Redis支持五种主要数据类型,分别是字符串、列表、集合、有序集合和散列

3. 支持丰富的操作类型
4. 支持分布式

  • 通过开启Redis集群模式来实现。在集群模式下,Redis会自动将数据根据键哈希值分散到不同的节点上,实现数据的分布式存储。
数据类型说明实现类型操作
字符串Redis最基本的数据类型,是二进制安全的数据序列(即:它可以包含任何数据 甚至是应该图片)数字、字符串、二进制数据SET(设置)、GET(获取)、INCR(自增)、DECR(自减
列表简单的字符串列表,按照插入顺序排序数组LPUSH(左侧插入)、RPUSH(右插)、LPOP(左侧弹出)、RPOP(右侧弹出)等
集合无序且不重复的字符串集合集合SADD(添加元素)、SMEMBERS(获取元素
有序集合有序集合与集合类似,但每个元素都有一个分数,根据分数排序。有序集合ZADD(添加元素)、ZRANGE(获取元素)等
散列散列是键值对的集合(类似于map)散列HSET(设置哈希字段和值)、HGET(获取)、HDEL(删除)等

1. Centos下Redis安装

Linux_Study 目录:5.2 https://blog.csdn.net/meini32/article/details/128562114

2. redis.conf配置文件介绍

https://blog.csdn.net/w15558056319/article/details/121414742

redis.conf配置

#(Network)修改访问:运行任何服务器访问redis
bind 0.0.0.0#(General)允许后台执行
daeminize yes#(se)设置密码
requirepass 123456

3. redis相关命令

#启动redis
redis-server redis.conf#查看相关进程
ps -ef | grep redis#进入命令行界面(本地启动)
redis-cli#远程启动
redis-cli -h host -p port -a password

命令行操作

#查看redis信息
info#查看redis端口信息
config get port#退出命令行界面
exit#重启并保存修改
#重启不保存
shutdown save
shutdown no save#redis 如果有密码(登录)
auth 123456#查看主机地址端口
config get bind#插入应该数据
set ky 10#删除数据
del ky#序列化操作
(将给定的key值序列化,结果是一个二进制串,代表可以将其持久化到磁盘或者在网络上传输)
DUMP ky#判断存在
EXISTS ky#查看key的有效时间 :-2表示已过期或不存在、-1表示永久有效
TTL ky                  #s
PTTL ky                 #ms#设置有效时间(30s)
EXPIRE ky 30#设置永久有效
PERSIST ky#获取满足给定模式所有key
KEYS *

在这里插入图片描述

#set和get127.0.0.1:6379> set ky1 23
OK
127.0.0.1:6379> set ky2 nini
OK
127.0.0.1:6379> get ky1
"23"
127.0.0.1:6379> get ky2
"nini"

4.redis中发布订阅和事务

4.1 发布订阅(Pub/Sub)

发布订阅(Pub/Sub)是一种消息通信模式,其中发布者(publisher)发布消息,而订阅者(subscriber)接收消息。

  • 这是一个非持久性的消息系统,因为当没有订阅者在线时,发布的消息将会丢失。
  • 发布者和订阅者都可以是任何Redis客户端。
  • 发布者可以将消息发送到特定的频道,而订阅者可以通过订阅一个或多个频道来接收消息。
命令说明格式
PUBLISH:将指定的消息发送到指定的频道PUBLISH channel message。
SUBSCRIBE:订阅指定的频道。当该频道有消息发布时,订阅者将会收到消息。SUBSCRIBE channel [channel …]
UNSUBSCRIBE取消订阅指定的频道UNSUBSCRIBE channel [channel …]
PUBSUB:用于获取有关给定键的信息可以获取发布者和订阅者数量、发布次数等。

在这里插入图片描述

4.2 事务

Redis事务是一组命令的集合,这些命令被打包成一个整体并原子性地执行。这意味着在事务执行过程中,其他客户端提交的命令请求不会插入到事务执行命令序列中。

  • Redis事务的概念类似于数据库事务,具有原子性、一致性和隔离性。
redis中的事务和mysql中的事务有什么区别?
- 默认状态
Redis:Redis默认开启事务,即默认情况下,每一条写命令都会被放入一个未命名的队列中,只有当执行EXEC命令时,队列中的命令才会被执行。
MySQL:MySQL默认开启事务,但每一条SQL语句都会立即执行,无法排队执行。- 四大特性
都是有ACID的特性,但是redis并不能保证事务的隔离性(因为Redis使用单一线程的模型来执行事务)

以下的表格列出了Redis事务相关的命令:

命令描述
MULTI标记一个事务块的开始。
EXEC执行所有事务块内的命令。
DISCARD取消事务,放弃执行事务块内的所有命令。
WATCH监视一个或多个键,如果在事务执行之前这个(或这些)键被其他命令所改动,那么事务将被打断。

在这里插入图片描述

5. redis封装系统服务

工具所在位置
/home/vagrant/soft/redis/redis-7.0.2/utils/install_server.sh
在这里插入图片描述

#列出所有以"redis"为名的服务及其启动状态。
chkconfig --list | grep redis

systemctl是一个用于管理系统进程的命令行工具,是Systemd系统管理工具的一部分。Systemd是一个用于初始化系统、管理进程和服务的系统管理工具。

启动服务:systemctl start service_name
停止服务:systemctl stop service_name
重启服务:systemctl restart service_name
查看服务状态:systemctl status service_name
启用开机自启动服务:systemctl enable service_name
停用开机自启动服务:systemctl disable service_name
查看服务是否为开机自启动:systemctl is-enabled service_name
查看所有服务状态:systemctl list-units --type=service
查看所有已启用的服务:systemctl list-unit-files --type=service --state=enabled

在这里插入图片描述

6. 问题与解决

6.1 启动Redis报错:Could not create Server TCP listening socket *:6379: bind: Address already in use

解决办法:添加链接描述


6.2 Could not connect to Redis at 127.0.0.1:6379: Connection refused

添加链接描述


相关文章:

Redis快速入门

文章目录 0. Redis介绍1. Centos下Redis安装2. redis.conf配置文件介绍3. redis相关命令4.redis中发布订阅和事务4.1 发布订阅(Pub/Sub)4.2 事务 5. redis封装系统服务6. 问题与解决6.1 启动Redis报错:Could not create Server TCP listening…...

EasyExcel 修改导出的文件属性

EasyExcel 修改导出的文件属性 导出的文件有多种属性,本文只针对sheet名称进行举例 需要自定义拦截器 ExcelWriter excelWriter EasyExcel.write(fileName).withTemplate(stream).registerWriteHandler(new TemplateSheetStrategyHandler()).build()registerWriteHandler (n…...

电子班牌云平台系统——智慧校园管理工具,多媒体信息发布、走班排课、家校互通、物联控制、教务管理、考勤管理、素质评价、日常办公

电子班牌云平台源码,saas模式微服务架构 电子班牌是一款智慧校园管理工具,也是校园多媒体展示平台。智慧班牌融合了多媒体信息发布、走班排课、家校互通、物联控制、教务管理、考勤管理、素质评价、日常办公等一系列应用,是校园管理的现代化手…...

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储 环境 详情环境可参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 我这里 <spring.cloud.alibaba-version>2021.1</spring.cloud.alibaba-version>所…...

three.js 场景中如何彻底删除模型和性能优化

three.js 场景中如何彻底删除模型和性能优化 删除外部模型 在three.js场景中&#xff0c;要彻底删除外部模型&#xff0c;需要执行以下几个步骤&#xff1a; 从场景中移除模型 你可以使用 scene.remove(model) 或者 scene.remove(model.children[0]) 将模型从场景中移除。如果…...

Bridge Champ举办人机对战赛:NFT游戏与传统竞技共生发展编织新格局

概要 现在,NFT与体育竞技正日益紧密地联系在一起。一些体育项目开始推出与赛事或球队相关的NFT,同时也有部分NFT游戏开始举办电子竞技赛事。这种共生发展正在改变体育竞技的生态。 笔者采访了桥牌冠军项目相关负责人,探讨NFT游戏与传统体育竞技的融合潜力。桥牌冠军近期成功举…...

Visual Studio软件_MSC_VER值(MSVC编译器版本)的获取方法

本文介绍查看Visual Studio软件_MSC_VER值的方法。 _MSC_VER是微软公司推出的C/C 编译器——MSVC编译器的一个内置宏&#xff0c;其值表示当前Visual Studio软件中MSVC编译器的具体版本。不同的Visual Studio软件版本对应着不同的MSVC编译器版本——无论是不同发布年份的版本&…...

02-Linux-IO多路复用之select、poll和epoll详解

前言&#xff1a; 在linux系统中&#xff0c;实际上所有的 I/O 设备都被抽象为了文件这个概念&#xff0c;一切皆文件&#xff0c;磁盘、网络数据、终端&#xff0c;甚至进程间通信工具管道 pipe 等都被当做文件对待。 在了解多路复用 select、poll、epoll 实现之前&#xff…...

echo、print_r、print、var_dump 、die

die()和exit()函数都有终止线程的作用 是php断点调试需要使用的最主要的函数 die()函数一般与“or”一并使用&#xff0c;写作“or die()” var_dump()和print_r() var_dump() 显示关于一个或多个表达式的结构信息&#xff0c;包括表达式的类型与值。数组将递归展开值&#…...

【LeetCode75】第四十四题 省份数量

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一个二维数组&#xff0c;表示城市之间的连通情况&#xff0c;连在一起的城市为一个省份&#xff0c;问我们一共有多少个省份。 这…...

把DTC从Excel导入cdd的方法

本文是基于CANdelaStudio12.0讲解 问题一&#xff1a;当导入DTC的xxx.cdi文件报如下红色错误 可能原因&#xff1a;在设置具有下拉框的属性的内容时&#xff0c;输入的内容不在下拉框列表中 解决办法:在.cddt文件中更新“”Error Code Table“”内容&#xff0c;把新的选项更新…...

养猪废水处理设备的处理方法

诸城市鑫淼环保小编带大家了解一下养猪废水处理设备的处理方法 1.高有机负荷&#xff1a;猪粪尿含有大量有机物质&#xff0c;比如蛋白质、脂肪和淀粉等&#xff0c;这些有机物在水体中分解会消耗氧气&#xff0c;导致水体缺氧。 2.高氨氮含量&#xff1a;猪粪尿中的蛋白质分解…...

【React】React学习:从初级到高级(三)

3 状态管理 随着应用不断变大&#xff0c;应该更有意识的去关注应用状态如何组织&#xff0c;以及数据如何在组件之间流动。冗余或重复的状态往往是缺陷的根源。 3.1 用State响应输入 3.1.1 声明式地考虑UI 总体步骤如下&#xff1a; 定位组件中不同的视图状态 确定是什么…...

Rest和Http什么关系?

分析&回答 REST 定义了一组体系架构原则&#xff0c;您可以根据这些&#xff0c;包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态。 REST只是一种风格&#xff0c;不是一种标准REST是以资源为中心的 用不同的 HTTP 请求方法来处理对资源的 CRUD&#xff0…...

leetcode原题: 生存人数

题目&#xff1a; 给定 N 个人的出生年份和死亡年份&#xff0c;第 i 个人的出生年份为 birth[i]&#xff0c;死亡年份为 death[i]&#xff0c;实现一个方法以计算生存人数最多的年份。 你可以假设所有人都出生于 1900 年至 2000 年&#xff08;含 1900 和 2000 &#xff09;…...

K8S的介绍和架构

仅供入门 K8S的介绍和架构 一. 什么是kubernetes二、Kubernetes架构和组件 2.1 核心组件 2.1.1 Kubernetes Master控制组件&#xff0c;调度管理整个系统&#xff08;集群&#xff09;&#xff0c;包含如下组件: a、Kubernetes API Serverb、Kubernetes Schedulerc、Kubernet…...

linux信号量

通过学习linux的信号量&#xff0c;对linux的信号量进行了编程。...

Jupyter Notebook 好用在哪?

Jupyter Notebook 是一个 Web 应用程序&#xff0c;便于创建和共享文学化程序文档&#xff0c;支持实时代码、数学方程、可视化和 Markdown&#xff0c;其用途包括数据清理和转换、数值模拟、统计建模、机器学习等等。目前&#xff0c;数据挖掘领域中最热门的比赛 Kaggle 里的资…...

华为云云服务器评测|基于云服务器的minio部署手册

华为云云服务器评测|基于云服务器的minio部署手册 【软件安装版本】【集群安装&#xff08;是&#xff09;&#xff08;否&#xff09;】 版本 创建人 修改人 创建时间 备注 1.0 jz jz 2023.9.2 minio华为云耀服务器 一. 部署规划与架构 1. 规…...

【网络安全带你练爬虫-100练】第22练:数据包中参数提取与处理

目录 一、目标1&#xff1a;GET数据包的处理 1、GET数据包中参数的提取 2、GET请求中 统计参数个数 二、目标2&#xff1a;POST数据包的处理 1、post中参数个数的提取 2、POST请求中 统计参数个数 一、目标1&#xff1a;GET数据包的处理 1、GET数据包中参数的提取 impo…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...