【教程】 一文部署配置并入门 Redis

综述

什么是Redis

Redis官网——Redis.io

Redis, 作为一个高性能的键值对数据库,主要应用于以下场景:

  • 缓存系统:由于其高速读写能力,Redis 非常适合用作缓存系统,减少数据库负载。

  • 会话存储(Session Store):Redis 可以存储用户会话信息,常用于网站登录系统。

  • 消息队列系统:利用其发布/订阅模式,Redis 可作为消息队列使用,用于异步处理任务。

  • 实时分析:Redis 的速度使其成为实时数据处理的理想选择,如计数器、实时统计等。

  • 排行榜系统:使用 Redis 的排序集合,可以高效实现排行榜功能。

  • 地理空间数据存储:Redis 提供地理空间相关的数据结构,可以用于地理位置相关功能。

  • 持久化存储:虽然 Redis 是内存数据库,但它支持数据持久化,可用于需要快速读写且偶尔需要持久化的场景。

这些应用场景展示了 Redis 的灵活性和高性能,使其成为现代Web应用中不可或缺的一部分。

Redis数据结构的实际应用场景

类型简介特性场景
String(字符串)二进制安全可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M-
Hash(字典)键值对集合,即编程语言中的Map类型适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)存储、读取、修改用户属性
List(列表)链表(双向链表)增删快,提供了操作某一段元素的API1. 最新消息排行等功能(比如朋友圈的时间线)
2. 消息队列
Set(集合)哈希表实现,元素不重复1. 添加、删除,查找的复杂度都是O(1)
2. 为集合提供了求交集、并集、差集等操作
1. 共同好友
2. 利用唯一性,统计访问网站的所有独立ip
3. 好友推荐时,根据tag求交集,大于某个阈值就可以推荐
Sorted Set(有序集合)将Set中的元素增加一个权重参数score,元素按score有序排列数据插入集合时,已经进行天然排序1. 排行榜
2.带权重的消息队列

安装 & 配置

Redis在Ubuntu安装

  1. 更新包列表:
    在安装新软件之前,最好更新系统的包列表。打开终端并输入以下命令:
	sudo apt update
  1. 安装Redis:
    使用apt包管理器安装Redis。在终端输入以下命令:
	sudo apt install redis-server
  1. 验证Redis安装:
    安装完成后,可以通过检查Redis服务的状态来验证是否安装成功。输入以下命令:
   sudo systemctl status redis-server

如果Redis服务正在运行,你将看到状态为"active (running)"。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 配置Redis(可选):
    如果需要对Redis进行配置,可以编辑其配置文件。默认情况下,Redis配置文件位于/etc/redis/redis.conf。使用你喜欢的文本编辑器打开它,例如:
   sudo nano /etc/redis/redis.conf

在这里,你可以根据需要更改各种设置,例如内存使用限制、持久化选项等。

  1. 启动Redis服务:
    如果Redis服务没有自动启动,你可以使用以下命令手动启动它:
   sudo systemctl start redis-server

要使Redis在系统启动时自动启动,可以使用以下命令:

   sudo systemctl enable redis-server
  1. 测试Redis:
    安装完成后,你可以测试Redis是否正常工作。在终端输入redis-cli,然后在Redis提示符下输入ping,如果一切正常,你将收到PONG的回应。
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果要配置外网访问,执行sudo ufw allow 6378并配置相应的端口映射 / 端口开放 / 内网穿透即可。

RedisInsight的安装(可选)

数据库连接工具有很多种,比如JetbrainDataGripMysql官方的MysqlWorkbanch,如果你想的话,也可以直接使用redis-cli进行操作,但是如果你想要官方的使用体验,可以安装RedisInsight

  1. 安装好后界面如图:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 添加数据库连接:(如果你是部署和连接都在Ubuntu上,那么设置都不需要动)外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. 界面如图:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  4. 点击左侧WorkBench外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  5. 准备完成。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


–raw参数

如果你想继续使用Redis原生的命令行工具,直接在终端上输入redis-cli即可启动redis客户端。

redis-cli --raw

--raw——代表以原始形式来显示内容,Redis的字符串都是以二进制方式存储的,输入中文的话只会输出一堆16进制的代码。使用raw参数可以让客户端自动解码。


# Redis基础语法 ## Redis基本增删查改 ### SET 增加和修改 Redis中的数据都是以Key-Value键值对的形式存储的,使用`SET`命令来设置一个Key-Value键值对: ```SQL SET name gulugulu1103 ``` 返回`OK`: ```SQL 127.0.0.1:6379> SET name gulugulu1103 OK ```

GET 查找

使用GET命令+Key。

注意:Redis大小写敏感。

GET name

返回相应的Value:

"gulugulu1103"

如果GET命令后面的Key未定义,则会返回(nil)

DEL 删除

使用DEL命令+Key

DEL name

若删除成功,则会返回(interger) 1
若删除失败,则会返回(interger) 0

删除失败的原因基本上是两种:

  1. Key不存在
  2. Key被占用

EXISTS 判断是否存在Key

EXISTS name

若存在,返回(interger) 1
若不存在,返回(interger) 0

SETNX 不替换的设置

SETNX name gulugulu1104

若成功替换,则返回(interger) 1
若失败替换,则返回(interger) 0

KEYS 查询库中有哪些Key

使用KEYS + pattern进行查询

EXISTS *

若没有Key,则返回(empty array)
若有Key,则按列表模式返回所有Key的字符串。

127.0.0.1:6379> KEYS *
1) "name2"
2) "name1"
3) "name"

FLUSHALL删除所有Key**(谨慎使用)**

若删除成功,则返回OK

Redis数据结构

以下不提供具体实例,只提供语法。小写字母均代表抽象定义,如key代表键,value代表值。
下列语法中,[]代表可选参数,…代表可重复

列表(List)

到这里可能有点没反应过来,其实类比编程语言,我们可以把key看成是变量名,把value看成是变量的值,这样就很好理解使用Key-Value Pair去存储Redis中的数据了。

LPUSH & RPUSH 在列表首位添加

LPUSH key value [value ...]
RPUSH key value [value ...]

–> (interger) 列表长度

LRANGE & RRANGE 查询列表内容

LRANGE key start stop
RRANGE key start stop

start <-- 0 表示第一个元素
stop <-- -1 表示最后一个元素
若start > stop,–> (empty list or set)

LPOP & RPOP 删除元素

LPOP key [count]
RPOP key [count]

[count] <-- 默认为1
若count > size,则全部删除
若count == 1,–> 被删元素
若count > 1,–> 被删子列表

LTRIM 仅保留范围内元素

LTRIM key start stop 

–> “OK”

LLEN 查看列表长度

LLEN key

–> (interger) 数组长度
若key不存在,–> (interger) 0

集合 (Set)

在Redis中,集合(Set)是由字符串类型元素组成的无序集合。集合是通过哈希表实现的,这意味着添加、删除和查找元素的复杂度都是O(1)。

Tips:集合(Set)相关的命令都是以S开头的。

SADD 添加元素

SADD key member [member ...]

–> (interger) 1 表示成功
–> (interger) 0 表示失败,可能已经包含该元素

SMEMBERS 查看元素

SMEMBERS key 

–> 返回该集合中的列表

SISMEMBERS 判断是否在集合中

SISMEMBERS key member

–> (interger) 1 表示存在
–> (interger) 0 表示不存在

SREM 删除元素

SREM key member [member ...] 

–> (interger) 1 表示删除成功
–> (interger) 0 表示删除失败,可能是key值不存在或value不存在

集合运算(进阶)

SUNION - 合并集合
SUNION key [key ...]

–> 返回一个集合的并集。不同集合之间的元素互不相同。

SINTER - 交集运算
SINTER key [key ...]

–> 返回一个集合的交集。只包含同时存在于所有给定集合中的元素。

SDIFF - 差集运算
SDIFF key [key ...]

–> 返回一个集合与其他集合的差集。仅包含存在于第一个集合中,但不在其他给定集合中的元素。

SUNIONSTORE - 合并集合并存储
SUNIONSTORE destination key [key ...]

–> 此命令等同于SUNION,但它将结果存储在destination集合中,而不是简单地返回结果集。

SINTERSTORE - 交集运算并存储
SINTERSTORE destination key [key ...]

–> 此命令等同于SINTER,但它将结果存储在destination集合中。

SDIFFSTORE - 差集运算并存储
SDIFFSTORE destination key [key ...]

–> 此命令等同于SDIFF,但它将结果存储在destination集合中。

有序集合 (Sorted Set)

在Redis中,有序集合(Sorted Set)是集合的一种变体,每个元素都会关联一个双精度浮点数分数。Redis正是通过分数来为集合中的元素进行从小到大的排序。有序集合的元素是唯一的,但分数(score)可以重复。

Tips:有序集合(Sorted Set)相关的命令都是以Z开头的。

ZADD 添加或更新元素

ZADD key [NX|XX] [CH] [INCR] score member [score member ...]

NX:只有当成员不存在于有序集合中时,才会添加该成员。
XX:只有当成员已经存在于有序集合中时,才会更新该成员的分数。
CH:修改返回值的行为。如果指定了此选项,命令会返回被添加或被更新的成员的数量。如果没有指定CH,则只返回被添加的新成员的数量。
INCR:用于将分数增加到已有成员的分数上,而不是替换它。如果使用了这个选项,只能指定一个成员及其分数。这个选项实质上将ZADD命令的行为变为一个增量更新,类似于INCRBY命令。

–> (interger) 返回被成功添加或更新的元素的数量。

ZRANGE 查看元素

ZRANGE key start stop [WITHSCORES]

–> 按分数值递增(从小到大)顺序返回有序集合中指定区间内的成员。
若指定了WITHSCORES选项,–>

member
score
member
score
...

ZSCORE 获取成员分数

ZSCORE key member

–> 成员的分数值。
若成员不存在于有序集合中,–> (nil)

ZRANK 查看成员排名(升序)

ZRANK key member

–> 从小到大的索引

ZREVRANK 查看成员排名(降序)

ZREVRANK key member

–> 从大到小的索引

ZINCRBY增加成员分数

ZINCRBY key increment member

–> 该成员增加后的分数
若成员不存在,–> “-1”

ZREM 删除成员

ZREM key member [member ...]

–> (interger) 返回被成功删除的元素的数量。

有序集合运算(进阶)

ZUNIONSTORE - 合并多个有序集合
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

–> 计算给定的一个或多个有序集的并集,并将该并集(结果集)存储在destination中。

ZINTERSTORE - 有序集合交集
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

–> 计算给定的一个或多个有序集的交集,并将该交集(结果集)存储在destination中。

哈希 (Hash)

在 Redis 中,哈希是一种存储键值对的数据结构,用于存储对象。每个哈希可以存储多个字段(field)和对应的值(value),非常适合于存储和处理对象属性。哈希中的字段是唯一的,但值可以重复。

Tips:哈希(Hash)相关的命令都是以H开头的。

HSET 添加或更新字段

HSET key field value [field value ...]
  • 如果字段已存在于哈希key中,值会被更新。
  • 如果字段不存在,则字段会被创建并设置值。

–> (integer) 返回新增字段的数量。

HGET 获取字段的值

HGET key field

–> 返回哈希表中指定字段的值。
如果字段不存在,–> (nil)

HMSET 设置多个字段的值

HMSET key field1 value1 [field2 value2 ...]

–> 同时设置一个或多个字段的值。
–> 返回 OK。

HMGET 获取多个字段的值

HMGET key field1 [field2 ...]

–> 返回哈希表中一个或多个指定字段的值。

HDEL 删除字段

HDEL key field [field ...]

–> 删除一个或多个字段。
–> (integer) 返回被成功删除的字段数量。

HEXISTS 检查字段是否存在

HEXISTS key field

–> 检查字段是否存在于哈希表中。
–> (integer) 1 表示存在,0 表示不存在。

HLEN 获取字段数量

HLEN key

–> 返回哈希表中字段的数量。

HKEYS 获取所有字段名

HKEYS key

–> 返回哈希表中所有字段的名称。

HVALS 获取所有字段值

HVALS key

–> 返回哈希表中所有字段的值。

HGETALL 获取所有字段和值

HGETALL key

–> 返回哈希表中的所有字段和值。

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

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

相关文章

【九日集训】第五天:排序

今天主要学习了C语言中的排序API,Qsort()本质上还是使用快速排序实现的; 具体使用方法:qsort(待排序数组, 数组长度, 每个元素字节长 sizeof(int), 比较函数) 比较函数 比较函数决定当前排序是升序还是降序,传入两个参数,返回1则交换,-1和0则不交换 一般使用方法 int cmp(…

在Spring Boot中使用不同的日志

前言&#xff0c;本篇就是介绍在Java中使用相关的日志&#xff0c;适合初学者看&#xff0c;如果对这篇不感兴趣的可以移步了&#xff0c;本篇主要围绕我们Java中的几种日志类型&#xff0c;也说不上有多深入&#xff0c;算的上浅入浅出吧&#xff0c;如果你有一段时间的开发经…

单片机_RTOS_架构

一. RTOS的概念 // 经典单片机程序 void main() {while (1){喂一口饭();回一个信息();} } ------------------------------------------------------ // RTOS程序 喂饭() {while (1){喂一口饭();} }回信息() {while (1){回一个信息();} }void main() {create_task(喂饭);cr…

OpenHarmony 4.0 Release 编译及报错

1、环境准备 安装下面这三东西&#xff0c;是为了下载 Harmony 源码 sudo apt install curl sudo apt install python3-pip sudo apt install git-lfs 安装下面这五个东西&#xff0c;是为了解决编译到最后报错(头铁不信的&#xff0c;你可以试试&#xff0c;等最后再安装) …

opencv常用函数表

函数名功能说明cv2.imread()读取图像文件cv2.imshow()显示图像窗口cv2.imwrite()保存图像文件cv2.cvtColor()颜色空间转换cv2.resize()图像缩放cv2.flip()图像翻转cv2.rectangle()绘制矩形cv2.circle()绘制圆形cv2.line()绘制直线cv2.putText()绘制文本cv2.bitwise_and()与操作…

【Hadoop】集群资源管理器 YARN

一、yarn 简介 Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.x 引入的分布式资源管理系统。主要用于解决 hadoop 1.x 架构中集群资源管理和数据计算耦合在一起&#xff0c;导致维护成本越来越高的问题。 yarn主要负责管理集群中的CPU和内存 用户可以将各种服…

linux 中断管理机制

中断的概念 中断是指在CPU正常运行期间&#xff0c;由于内外部事件或由程序预先安排的事件引起的 CPU 暂时停止正在运行的程序&#xff0c;转而为该内部或外部事件或预先安排的事件服务的程序中去&#xff0c;服务完毕后再返回去继续运行被暂时中断的程序。Linux中通常分为外部…

yolov1网络结构说明

文章目录 一. 网络结构二. 网络说明1. 网络的输入2. 网络的输出(1) 5 5表示:每个网格使用两个先验框进行预测。(2) “5”表示&#xff1a;每个先验框包含的预测信息的数量。(3) 20表示&#xff1a;20个分类预测值(4) 每个网格能预测几个目标&#xff1f; 一. 网络结构 论文下…

在日常工作中怎么处理vue项目中的错误的?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue项目中的错误如何处理 目录 一、错误类型 二、如何处理 后端接口错误 代码逻辑问题 全局设…

各厂商服务器存储默认管理口登录信息(默认IP、用户名、密码)收集汇总

一、服务器IPMI管理信息 服务器IPMI管理信息 设备类型 设备型号 默认管理IP 默认用户名 默认密码 华为服务器 E6000 10.10.1.101-10.10.1.110 root Huawei12#$ RH2288 v3系列 192.168.2.100 root Huawei12#$ RH2288 v5系列 192.168.2.100 Administrator Admin@9000 T6000 10.10…

Elasticsearch 快照如何工作?

作者&#xff1a;Lutf ur Rehman Elastic 提供许多由讲师指导的面对面和虚拟现场培训以及点播培训。 我们的旗舰课程是 Elasticsearch 工程师、Kibana 数据分析和 Elastic 可观测性工程师。 所有这些课程都会获得认证。有关这些课程的详细介绍&#xff0c;请参考我之前的文章 “…

知识蒸馏相关基础知识

知识蒸馏 前置知识 Loss 现在分数-正确分数1 例&#xff1a; 正则化 Regularization 用来防止过拟合 知识蒸馏相关 softmax 把分数转换为概率的一种方法&#xff0c;e的次方 hard targets 和 soft targets 蒸馏温度 T 在原来的softmax下&#xff0c;除以某个系数&am…

Sublime text 添加到鼠标右键菜单,脚本实现

Sublime text 添加到鼠标右键菜单 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\SublimeText] "Open with Sublime Text" "Icon""D:\\Program Files\\Sublime Text\\sublime_text.exe,0" [HKEY_CLASSES_ROOT\*\shell\Subl…

HTTP采用的SSL/TLS标准如何保证通信的安全性?

HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是在HTTP基础上添加了SSL/TLS加密层的安全版本。它使用SSL&#xff08;Secure Sockets Layer&#xff09;或TLS&#xff08;Transport Layer Security&#xff09;协议对数据进行加密传输&#xff0c;确保数据…

win10下安装 Anaconda + Cuda + Cudnn + Pycharm + Pytorch

1.安装Anaconda &#xff08;1-1&#xff09;下载Ananconda, Anaconda官网 选择windows版本&#xff1b; &#xff08;1-2&#xff09;安装Anaconda,一般选择【Just Me】 &#xff08;1-3&#xff09;建议不要装在C盘&#xff0c;后期多环境的python环境和各种库文件会占用很多…

Docker的基本概念和优势,以及在应用程序开发中的实际应用

文章目录 概要 基本概念 容器 (Container): 镜像 (Image): Dockerfile: 仓库 (Repository): 容器编排 (Orchestration): Docker Compose: Docker Daemon 和 Docker Client: 网络 (Network): 数据卷 (Volume): 主要优势 应用场景 小结 概要 Docker 是一种容器化平台&#xff0c;…

ruoyi-vue 整合EMQX接收MQTT协议数据

EMQX安装完成后&#xff0c;需要搭建客户端进行接收数据进一步对数据处理&#xff0c;下面介绍基于若依分离版开源框架来整合EMQX方法。 1.application.yml 添加代码 mqtt:hostUrl: tcp://localhost:1883username: devpassword: devclient-id: MQTT-CLIENT-DEVcleanSession: …

【物联网与大数据应用】Hadoop数据处理

Hadoop是目前最成熟的大数据处理技术。Hadoop利用分而治之的思想为大数据提供了一整套解决方案&#xff0c;如分布式文件系统HDFS、分布式计算框架MapReduce、NoSQL数据库HBase、数据仓库工具Hive等。 Hadoop的两个核心解决了数据存储问题&#xff08;HDFS分布式文件系统&#…

mysql5.7生成SSL证书

1、创建 CA 私钥和 CA 证书 &#xff08;1&#xff09;下载并安装openssl,将bin目录配置到环境变量&#xff1b; &#xff08;2&#xff09;设置openssl.cfg路径&#xff08;若不设置会报错&#xff0c;找不到openssl配置文件&#xff09; set OPENSSL_CONFG:\Program Files\…

nexus 制品库管理

目录 一、nexus 介绍 二、nexus 支持的仓库 三、nexus 部署 四、nexus 数据备份 五、创建一个内网yum源 六、创建一个代理yum仓库 七、jenkins 使用 nexus插件 7.1 jenkins 安装插件 7.2 配置 maven 工程 7.3 查看构建和上传 一、nexus 介绍 Nexus 是一个强大的仓库管…