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

添加链接描述


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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32微控制器的低功耗模式

STM32微控制器的低功耗模式(Low-power modes):Sleep mode、Stop mode 和 Standby mode。 1.1 Sleep Mode(睡眠模式): 把STM32微控制器当作一位劳累的工人,他在工作过程中需要短暂的休息。在Sleep模式下,微控制器会关闭一部分电路,减小功耗,但仍然保持对中央处理单…

C++ Opencv视频检测

使用OpenCV进行视频检测的一般步骤如下&#xff1a;导入OpenCV库和视频文件。 对每一个视频帧进行对象检测。可以使用诸如Haar特征分类器、Cascade分类器或深度学习模型等技术进行对象检测。 #include <opencv2/imgcodecs.hpp> #include <opencv2/highgui.hpp> …

Python Opencv实践 - 轮廓特征(最小外接圆,椭圆拟合)

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/stars.PNG") plt.imshow(img[:,:,::-1])#轮廓检测 img_gray cv.cvtColor(img, cv.COLOR_BGR2GRAY) ret,thresh cv.threshold(img_gray, 127, 255, 0) contou…

【C++漂流记】结构体的定义和使用、结构体数组、结构体指针、结构体做函数参数以及结构体中const的使用

结构体&#xff08;struct&#xff09;是C语言中一种重要的数据类型&#xff0c;它由一组不同类型的成员组成。结构体可以用来表示一个复杂的数据结构&#xff0c;比如一个学生的信息、一个员工记录或者一个矩形的尺寸等。 结构体定义后&#xff0c;可以声明结构体变量&#xf…

自然语言处理历史史诗:NLP的范式演变与Python全实现

目录 一、引言什么是自然语言处理&#xff1f;语言与人类思维自然语言的复杂性NLP的历史轨迹 二、20世纪50年代末到60年代的初创期符号学派重要的研究和突破 随机学派重要的研究和突破 三、20世纪70年代到80年代的理性主义时代基于逻辑的范式重要的研究和突破 基于规则的范式重…

MATLAB 2023安装方法之删除旧版本MATLAB,安装新版本MATLAB

说明&#xff1a;之前一直使用的是MATLAB R2020b&#xff0c;但最近复现Github上的程序时&#xff0c;运行不了&#xff0c;联系作者说他的程序只能在MATLAB 2021之后的版本运行&#xff0c;因此决定安装最新版本的MATLAB。 系统&#xff1a;Windows 11 需要卸载的旧MATLAB 版…

yml配置动态数据源(数据库@DS)与引起(If you want an embedded database (H2, HSQL or Derby))类问题

1&#xff1a;yml 配置 spring:datasource:dynamic:datasource:master:url: jdbc:mysql://192.168.11.50:3306/dsdd?characterEncodingUTF-8&useUnicodetrue&useSSLfalse&tinyInt1isBitfalse&allowPublicKeyRetrievaltrue&serverTimezoneUTCusername: ro…

go语言学习笔记

Go学习 一直想学一门新语言&#xff0c;难度又不想太大&#xff0c;C和Java都会但是不怎么精通&#xff0c;某天看到Go语言&#xff0c;好的&#xff0c;就是它了。总体来说&#xff0c;go语言的学习还是相对简单&#xff0c;有编程基础的入手很快。 简介 go是一种并发、带垃…

Git常用命令用法

参考视频&#xff1a;真的是全能保姆 git、github 保姆级教程入门&#xff0c;工作和协作必备技术&#xff0c;github提交pr - pull request_哔哩哔哩_bilibili 1.Git初始化 首先设置名称和邮箱。然后初始化一下&#xff0c;然后就创建了一个空的Git仓库。 PS D:\golang\oth…

机器人中的数值优化(九)——拟牛顿方法(下)、BB方法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…

SpringMVC相对路径和绝对路径

1.相对地址与绝对地址定义 在jsp&#xff0c;html中使用的地址&#xff0c;都是在前端页面中的地址&#xff0c;都是相对地址 地址分类&#xff1a;&#xff08;1&#xff09;&#xff0c;绝对地址&#xff0c;带有协议名称的是绝对地址&#xff0c;http://www.baidu.com&…

stable diffusion实践操作-SD原理

系列文章目录 本文专门开一节写SD原理相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 文章目录 系列文章目录前言一、原理说明1.1、出图原理1.1.1 AI画画不是和人一样&#xff0c;从0开始&#xff0c;而是一个去噪点的过程&am…