【教程】 一文部署配置并入门 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.rhkb.cn/news/206598.html

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

相关文章

构建未来:云计算 生成式 AI 诞生科技新局面

目录 引言生成式 AI&#xff1a;开发者新伙伴云计算与生成式 AI 的无缝融合亚马逊云与生成式 AI 结合的展望/总结我用亚马逊云科技生成式 AI 产品打造了什么&#xff0c;解决了什么问题未来科技发展趋势&#xff1a;开发者的机遇与挑战结合实践看未来结语开源项目 引言 2023年…

基于SpringBoot母婴商城

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本母婴商城系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

04.里氏替换原则(Liskov Substitution Principle)

暴论&#xff1a;一般的&#xff0c;如果一个富二代不想着证明自己&#xff0c;那么他一辈子都会衣食无忧。 一言 里氏替换原则想告诉我们在继承过程中会遇到什么问题&#xff0c;以及继承有哪些注意事项。 概述 这是流传较广的一个段子&#xff1a; “一个坐拥万贯家财的富二…

DBS note6:Hashing(哈希存储)

目录 一、一般策略 二、算法简述 三、哈希缺点&#xff08;Drawbacks of Hashing&#xff09; 四、举例 五、外部哈希的分析 一、一般策略 由于我们无法一次性将所有数据放入内存中&#xff0c;我们需要构建多个不同的哈希表并将它们连接在一起。然而&#xff0c;这个想法…

第20 章 多线程

20.1线程简介. 20.2创建线程 2.1继承Thread类 Thread 类是java.lang包中的一个类&#xff0c;从这个类中实例化的对象代表线程&#xff0c;程序员启动一个新线程需要建立Thread 实例。Thread类中常用的两个构造方法如下: public Thread():创建一个新的线程对象。 public Threa…

如何提高3D建模技能?

无论是制作影视动画还是视频游戏&#xff0c;提高3D建模技能对于你的工作都至关重要的。那么如何能创建出精美的3D模型呢&#xff1f;本文给大家一些3D建模技能方面的建议。 3D建模通过专门的软件完成&#xff0c;涉及制作三维对象。这项技能在视频游戏开发、建筑、动画和产品…

18、串口通信

串口介绍 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。 单片机的串口可以使单片机与单片机&#xff0c;单片机与电脑、单片机与各式各样的模块互相通信&#xff0c;极大的扩展了单片机的应用范围&…

大模型能否生成搜索引擎的未来?

文&#xff5c;郝 鑫 编&#xff5c;刘雨琦 ChatGPT火爆之前&#xff0c;水面下&#xff0c;也有中国公司也在朝着智能助手的方向努力。夸克便是其中之一。在GPT风靡科技圈后&#xff0c;国内就开始陆续冒出一些大模型厂商。对当时夸克而言&#xff0c;做大模型毋庸置疑&am…

Python list列表添加元素的3种方法及删除元素的3种方法

Python list列表添加元素的3种方法 Python list 列表增加元素可调用列表的 append() 方法&#xff0c;该方法会把传入的参数追加到列表的最后面。 append() 方法既可接收单个值&#xff0c;也可接收元组、列表等&#xff0c;但该方法只是把元组、列表当成单个元素&#xff0c;这…

“逆风飞翔·事实孤儿同行计划”成长陪伴主题区域陪伴培训会

为推进各机构更好地开展事实孤儿成长陪伴工作&#xff0c;促进事实孤儿成长陪伴实施成效&#xff0c;搭建各机构间事实孤儿成长陪伴方式方法交流平台。11月26日&#xff0c;在中国乡村发展基金会、中国民生银行的支持下&#xff0c;由湖南省大爱无疆青少年公益发展中心主办&…

ZZULIOJ 2466: 楼上瞎说,楼下才是,Java

2466: 楼上瞎说&#xff0c;楼下才是 题目描述 《九章算术》的内容十分丰富&#xff0c;全书采用问题集的形式&#xff0c;收有246个与生产、生活实践有联系的应用问题&#xff0c;其中每道题有问&#xff08;题目&#xff09;、答&#xff08;答案&#xff09;、术&#xff…

MySQL事务详解

MySQL事务详解 数据库事务概述事务是如何实现的事务的ACID特性事务的状态 事务的使用显式事务隐式事务示例自动提交回滚回滚到保存点 事务的隔离级别数据并发问题MySQL 支持的四种隔离级别注意示例 设置隔离级别 事务的常见分类 数据库事务概述 数据库事务是数据库管理系统&am…

【Linux】:信号(一)产生

信号 一.前台进程和后台进程1.前台进程2。后台进程3.总结 二.自定义信号动作接口三.信号的产生1.键盘组合键2.kill信号进程pid3.系统调用1.kill函数2.raise函数3.abort函数 四.异常五.软件条件六.core文件 一.前台进程和后台进程 1.前台进程 一个简单的代码演示 像这种程序在…

华为云之云桌面Workspace的使用体验

华为云之云桌面Workspace的使用体验 一、云桌面Workspace介绍1.云桌面简介2.云桌面特点3. 云桌面应用场景①远程移动办公②协同办公③安全办公④公用终端⑤图形制作渲染 二、本次实践介绍1. 本次实践目的2. 本次实践环境 三、购买云桌面1. 进入华为云的云桌面购买界面2. 选择购…

Linux下删除当前目录下的所有目录

Linux下删除当前目录下的所有目录 Linux下删除当前目录下的所有目录&#xff0c;可以使用命令&#xff1a;rm -rf ./* rm -rf ./*可以得知rm -rf ./命令是删除当前目录下的所有文件和文件夹&#xff0c;但不会删除根目录下的文件。其中&#xff0c;".“代表当前目录&…

ps 透明印章制作

ps 透明印章制作 1、打开不透明印章2、抠出红色印章3、新建图层4、填充红色印章到新图层5、导出透明印章 1、打开不透明印章 打开ps软件&#xff0c;菜单栏选择 文件-打开 选择本地不透明印章 打开 2、抠出红色印章 ps菜单栏 选择 选择-色彩范围 点击色彩范围 色彩范围窗口 取…

Python实现一箭穿心

文章目录 &#x1f384;效果&#x1f3f3;️‍&#x1f308;Turtle模块&#x1f339;代码&#x1f33a;代码讲解 &#x1f384;效果 &#x1f3f3;️‍&#x1f308;Turtle模块 Turtle是一个绘图工具&#xff0c;是Python标准库中的一个模块。它提供了一种简单而直观的方式来创…

docker环境安装

环境 主机环境 1. 宿主机环境 ubuntu-22.04.3-live-server-amd64 &#xff0c;下载地址&#xff1a; https://mirrors.aliyun.com/ubuntu-releases/22.04.3/ubuntu-22.04.3-live-server-amd64.iso 2. apt 包管理器&#xff0c;镜像源修改 : 将 http://cn.archive.ubunt…

【玩转 EdgeOne】| 腾讯云下一代边缘加速CDN EdgeOne 是安全加速界的未来吗?

目录 前言边缘加速与安全加固边缘计算与CDN的融合EdgeOne优秀的安全特性EdgeOne卓越的性能表现灵活的配置和管理生态系统的支持与发展技术创新与未来展望EdgeOne试用结束语 前言 在当下互联网的迅猛发展的时刻&#xff0c;云计算和边缘计算技术的快速发展为网络加速领域带来了…

83基于matlab 的时钟时间识别GUI

基于matlab 的时钟时间识别GUI。图像去除背景-转化为二值化图像-找出对应的直线边缘-找到秒针、分针、时针对应的直线&#xff0c;并算出斜率、角度-判断时间&#xff0c;分针与时针 &#xff08;度数&#xff09;。数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运…