【教程】 一文部署配置并入门 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,一经查实,立即删除!

相关文章

单片机_RTOS_架构

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

【Hadoop】集群资源管理器 YARN

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

yolov1网络结构说明

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

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

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

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…

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分布式文件系统&#…

nexus 制品库管理

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

在氮化镓和AlGaN上的湿式数字蚀刻

引言 由于其独特的材料特性&#xff0c;III族氮化物半导体广泛应用于电力、高频电子和固态照明等领域。加热的四甲基氢氧化铵(TMAH)和KOH3处理的取向相关蚀刻已经被用于去除III族氮化物材料中干法蚀刻引起的损伤&#xff0c;并缩小垂直结构。 不幸的是&#xff0c;由于化学蚀…

谱方法学习笔记-下(超详细)

谱方法学习笔记&#x1f4d2; 谱方法学习笔记-上(超详细) 声明&#xff1a;鉴于CSDN使用 K a T e X KaTeX KaTeX 渲染公式&#xff0c; KaTeX \KaTeX KATE​X 与 L a T e X LaTeX LaTeX 不同&#xff0c;不支持直接的交叉引用命令&#xff0c;如\label和\eqref。 KaTeX \KaT…

Docker + Jenkins + Nginx实现前端自动化部署

目录 前言一、前期准备工作1、示例环境2、安装docker3、安装Docker Compose4、安装Git5、安装Nginx和Jenkinsnginx.confdocker-compose.yml 6、启动环境7、验证Nginx8、验证Jenkins 二、Jenkins 自动化部署配置1、设置中文2、安装Publish Over SSH、NodeJS&#xff08;1&#x…

Stream API练习题

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 考虑到Stream API在实际…

关于前端学习的思考-浮动元素和块级元素的关系

先摆关系&#xff1a;浮动元素嵌套块级元素&#xff0c;浮动元素和块级元素是上下关系。 1、浮动元素为父盒子&#xff0c;块级元素为子盒子。 父盒子为浮动元素&#xff0c;子盒子不会继承。如图floatnone&#xff1b; 摆结论&#xff1a;子盒子为行内元素&#xff0c;行内块…

37.从0到上线三天搭建个人网站(第一天)

点赞收藏加关注&#xff0c;你也能住大别墅&#xff01; 挑战三天搭建个人网站 从0到上线 一、项目的主要功能 1.作为自己在网上的一个工作室。 2.发帖 3.展示个人项目连接 4.介绍自己&#xff08;没准儿还能接点活儿&#xff09; 二、UI风格参考 三、技术选型 1.前端&a…

设计规则:模块化的力量

这是一本比较冷门的书**《设计规则&#xff1a;模块化的力量》**&#xff0c;虽然豆瓣上只有58个评价&#xff0c;但是确实能学到很多东西。 这本书对我非常深远。不是是投资&#xff0c;创业&#xff0c;还是其他领域&#xff0c;模块化思想都能帮上你。这本书告诉我们生万物…

数据结构中的二分查找(折半查找)

二分法&#xff1a;顾名思义&#xff0c;把问题一分为2的处理&#xff0c;是一种常见的搜索算法&#xff0c;用于在有序数组或这有序列表中查找指定元素的位置&#xff0c;它的思想是将待搜索的区间不断二分&#xff0c;然后比较目标值与中间元素的大小关系&#xff0c;然后确定…

第八天:信息打点-系统端口CDN负载均衡防火墙

信息打点-系统篇&端口扫描&CDN服务&负载均衡&WAF防火墙 一、知识点 1、获取网络信息-服务器厂商&#xff1a; 阿里云&#xff0c;腾讯云&#xff0c;机房内部等。 网络架构&#xff1a; 内外网环境。 2、获取服务信息-应用协议-内网资产&#xff1a; FTP…