当前位置: 首页 > 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…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...