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

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...