Redis基本命令

news/2024/5/20 5:36:06

目录

一、包含String、Set数据类型的基本命令

1、添加一个键值对

2、获取key所关联的字符串值

3、同时设置多个key-value

4、获取多个key对应的值

运行结果

5、将给定的value追加到原值的末尾

追加后效果

6、删除单个key

7、同时删除多个key

8、查询包含某个字符的key

运行结果

9、查询数据库中所有key

10、查询以某个字符开头的key

运行结果

11、查询以某两个字符开头的key

运行结果

12、设置生存时间(默认以秒为单位)

生存时间到期后效果

13、查看剩余生存时间

14、取消剩余生存时间

15、将当前数据库的key移动到另一数据库

16、切换数据库

17、重命名

二、List相关命令

1、将一个或多个值插入到列表头部

运行效果

2、将一个或多个值插入到列表

插入后效果

3、移除并返回列表头部的元素

运行效果

4、移除并返回列表尾部的元素

5、获取列表指定范围内的元素

6、通过索引获取列表中的元素

7、获取列表长度

8、通过索引设置列表元素的值

9、对一个列表进行修剪(trim)

10、查看List集合中的所有元素

命令解释

三、Hash相关命令

1、设置散列的字段的字符串值

2、获取存储在指定键的散列中的字段的值

运行结果

3、同时设置一个散列的多个字段

运行后效果

4、同时获取一个散列的多个字段的值

运行结果

5、获取在散列中的所有字段和值

运行结果

6、删除一个或多个散列的字段

7、检查散列中是否存在指定的字段

8、增加散列中的字段的数值(必须是整数)

9、获取散列中的所有字段名

运行结果

10、获取散列中的所有值

运行结果

四、ZSET相关命令

1、向有序集合添加一个或多个成员,或更新已存在成员的分数

运行结果

2、按照分数从低到高的顺序返回有序集合中指定范围内的成员

运行结果

3、按照分数从高到低的顺序返回有序集合中指定范围内的成员

运行结果

4、返回有序集合中分数在指定区间内的成员

运行结果

5、移除有序集合中的一个或多个成员

运行结果

6、增加有序集合中成员的分数

运行结果

7、获取有序集合的成员数

运行结果

8、计算有序集合中分数在指定区间内的成员数

运行结果

9、获取有序集合中成员的分数

运行结果

10、获取有序集合中成员的排名

运行结果


Redis支持StringListHashSetZset等数据类型操作

一、包含String、Set数据类型的基本命令

Redis 中的字符串(String)数据结构是最基础也是最简单的数据类型。每个字符串在 Redis 中可以存储的数据最大可以达到 512 MB。字符串类型是通用的,可用于各种不同的场景:

  1. 缓存数据: 字符串是实现缓存机制的理想选择。可以缓存例如网页、图片、视频、JSON 对象以及普通的文本数据等。这可以大幅减少对后端数据库的请求次数,提高应用的响应速度。

  2. 计数器: Redis 字符串可以用作计数器,使用 INCRDECR 命令可以非常方便地对值进行递增或递减操作。这适用于跟踪网站的访问次数、下载计数或任何其他需要计数的场景。

  3. 共享会话状态: 在分布式系统中,Redis 可以用来存储和共享用户会话信息。由于其读写速度快,适合作为存储会话状态的解决方案,尤其是在多个应用服务器之间共享会话信息时。

  4. 分布式锁: Redis 字符串可以用来实现分布式锁的机制。通过设置一个键的值来表示锁的状态,使用命令如 SETNX(Set If Not Exists)来安全地创建锁,使用 EXPIRE 设置锁的过期时间来避免死锁。

  5. 实现队列和堆栈的简单形式: 虽然 Redis 提供了更专门的列表类型来处理队列和堆栈,但通过一些创造性的方法,也可以使用字符串来模拟队列和堆栈的功能。例如,可以将多个值串联成一个字符串,然后再适当地添加或删除数据。

  6. 存储复杂的聚合数据: 例如,一个大的JSON对象可以被序列化为字符串并存储在单个键中。这可以用于临时存储复杂数据的快照,便于快速读取和恢复状态。

Redis 中的集合(Set)是字符串的无序集合,且集合中的每个元素都是唯一的,不允许重复。Set 数据结构在Redis中提供了一组丰富的操作命令,使得它非常适合用于以下几种场景:

  1. 去重: Sets 是天然的去重工具,因为它们只允许存储唯一元素。这使得它们非常适用于需要记录唯一项的场景,如统计网站访问者的IP地址、记录在线用户的ID等。

  2. 标签和分类: 利用集合,可以有效地对对象进行分类或打标签。例如,可以创建多个集合来存储不同类别或标签的新闻文章、产品或其他对象。

  3. 社交网络: 在社交网络中,集合可用于表示用户的关系,如朋友列表。由于提供了直接的集合操作命令,Redis 非常适合快速查询两个用户是否为朋友,或列出共同的朋友。

  4. 实现简单的发布/订阅模型: 集合可以用来管理订阅者列表,每个集合代表一个主题,集合中的元素代表订阅该主题的用户。这样,发布消息时,可以迅速找到需要接收消息的用户列表。

  5. 轻量级的实时分析: 集合可以用来进行一些简单的实时分析,如记录独立访问的用户数,或者计算一定时间内访问特定页面的用户数量等。

1、添加一个键值对

set add CeShi

2、获取key所关联的字符串值

get add

3、同时设置多个key-value

mset userName ZhangSan age 22 address HeNanZhengZhou

4、获取多个key对应的值

mget userName age address

运行结果

5、将给定的value追加到原值的末尾

append add ".com"

追加后效果

6、删除单个key

del SSSS

7、同时删除多个key

del 18 myjob

8、查询包含某个字符的key

keys *u*

运行结果

9、查询数据库中所有key

keys *

10、查询以某个字符开头的key

keys a??

运行结果

11、查询以某两个字符开头的key

keys a[d]*

运行结果

12、设置生存时间(默认以秒为单位)

如果想以毫秒为单位,在命令前加字母p

EXPIRE age 50

生存时间到期后效果

13、查看剩余生存时间

如果想以毫秒为单位,在命令前加字母p

ttl CeShi2

14、取消剩余生存时间

PERSIST CeShi2

15、将当前数据库的key移动到另一数据库

#将当前数据库中的CeShi4键值对移动到6号数据库move CeShi4 6

16、切换数据库

#切换到0号数据库select 0

17、重命名

#将userName重命名为namerename userName name

二、List相关命令

Redis中的列表(List)数据结构是一个双向链表,可以在两端进行快速的插入和删除操作。这种数据结构的特性使其非常适用于以下几种场景:

  1. 实现队列和堆栈

    • 队列:Redis 列表可以作为队列使用,支持先进先出(FIFO)的数据处理模式。可以使用 LPUSH 命令向列表头部插入数据,使用 RPOP 命令从列表尾部移除数据。
    • 堆栈:同时,Redis 列表也可以作为堆栈使用,支持后进先出(LIFO)的数据处理模式。可以使用 LPUSH 向列表头部插入数据,然后用 LPOP 从头部移除数据。
  2. 消息队列: Redis 列表适合作为消息队列使用,可以实现应用程序之间的消息传递。生产者可以将消息推送到列表中,而消费者则从列表中读取并处理这些消息。Redis 还支持阻塞读取操作(如 BLPOPBRPOP),这使得消费者可以在没有新消息时等待,直到有消息到来。

  3. 发布/订阅模型的消息缓冲: 在使用 Redis 的发布/订阅模式进行消息传递时,列表可以作为消息缓冲区来使用,确保即使在订阅者暂时不可用的情况下也不会丢失消息。

  4. 最近使用的项目列表(LRU Cache): 列表还可以用来实现简单的最近最少使用(LRU)缓存。通过限制列表的大小并在每次访问后将元素移动到列表的开始位置,可以确保列表只保留最常访问的元素。

  5. 时间线或活动日志: 列表结构适合存储按时间排序的事件,如用户的活动日志或时间线。可以轻松地将新事件推送到列表的前端,并通过 LRANGE 命令来获取最近的事件记录。

  6. 数据流处理: 列表可以用于数据流的缓存,比如实时数据处理和批量处理。数据可以实时推入Redis列表,之后按需进行批量处理。

1、将一个或多个值插入到列表头部

lpush userName Zhangsan Lisi Wangwu Zhaoliu

运行效果

2、将一个或多个值插入到列表

lpush userName ZhangYang WangSan

插入后效果

3、移除并返回列表头部的元素

lpop userName

运行效果

成功返回ZhaoSi并移除

4、移除并返回列表尾部的元素

rpop userName

5、获取列表指定范围内的元素

#获取名为 userName 的列表从第 0 个到第 6 个元素lrange userName 0 6

6、通过索引获取列表中的元素

#获取索引位置为5的元素(索引从第一个元素开始,0、1、2、3省略号)lindex userName 5

7、获取列表长度

llen userName

8、通过索引设置列表元素的值

#将名为 userName 的列表中索引为 0 的元素设置为 CeShilset userName 0 CeShi

9、对一个列表进行修剪(trim)

让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除

#只保留名为 userName 的列表中索引从 3 到 6 的元素ltrim userName 3 6

10、查看List集合中的所有元素

lrange userName 0 -1

命令解释

  • LRANGE 是一个非常有用的命令,用于获取列表的子范围。
  • 第一个参数是列表的名称。
  • 第二个参数 0 表示列表的起始位置。
  • 第三个参数 -1 表示列表的结束位置,其中 -1 是一个特殊值,代表列表的最后一个元素。

三、Hash相关命令

Redis 中的散列(Hash)数据结构非常适合用来存储和管理对象或实体的多个字段和值。这使得散列在处理一些具体的应用场景时表现得非常高效和便捷。以下是一些适用于使用 Redis Hash 数据结构的场景:

  1. 存储对象数据: 散列非常适合存储对象或记录的属性,例如用户的个人资料、商品的详细信息等。例如,一个用户对象可能包括用户名、电子邮件、密码、注册日期等字段,这些可以作为键值对存入单个散列中。

  2. 缓存应用数据: 在Web应用中,常常需要缓存用户会话信息或其他频繁查询的对象。使用散列,可以轻松更新对象的单个字段而无需读取整个对象。

  3. 轻量级的结构存储: 相比于传统的关系数据库,Redis 的散列操作通常更快,占用的内存也更少。对于需要快速访问和更新的小型数据集,散列是一个很好的选择。

  4. 减少内存使用: 当存储相似结构的大量小对象时,使用散列比单独存储每个对象的每个字段作为独立的键会更加内存效率。Redis 对小散列进行了优化,使得它们使用更少的内存。

  5. 模拟其他结构: 散列可以用来模拟其他数据结构,如集合或列表。虽然这样做可能会失去一些特定数据结构的特性(如有序集合的自动排序),但在某些场景下可以作为一种简单的替代方案。

  6. 实时系统中的快速查找/更新: 散列允许对单个元素进行快速查找和更新,这对于实时系统来说非常重要,如在线游戏的玩家状态更新、实时交易系统中的账户信息更新等。

1、设置散列的字段的字符串值

#向名为 user:1000 的散列中添加或更新一个字段 name,值为 Johnhset user:1000 name john

2、获取存储在指定键的散列中的字段的值

#获取 user:1000 散列中 name 字段的值hget user:1000 name

运行结果

3、同时设置一个散列的多个字段

hmset user:1000 name john age 30 email ceshiceshi@qq.com

运行后效果

4、同时获取一个散列的多个字段的值

#获取name和age的值hmget user:1000 name age

运行结果

5、获取在散列中的所有字段和值

hgetall user:1000

运行结果

6、删除一个或多个散列的字段

#删除 user:1000 散列中的 email 字段hdel user:1000 email

7、检查散列中是否存在指定的字段

hexists user:1000 age

8、增加散列中的字段的数值(必须是整数)

#将年龄增加10hincrby user:1000 age 10

9、获取散列中的所有字段名

hkeys user:1000

运行结果

10、获取散列中的所有值

hvals user:1000

运行结果

四、ZSET相关命令

Redis中的有序集合(Sorted Set,简称ZSet)是一种数据结构,它不仅存储成员,同时每个成员都关联一个双精度浮点数分数(score),这允许集合保持有序。这些成员是唯一的,但分数可以重复。ZSet适合用于需要按分数排序元素的场景,例如排行榜、带权重的队列等。

1、向有序集合添加一个或多个成员,或更新已存在成员的分数

#向名为 scores 的有序集合中添加成员 user1 和 user2,分数分别为 50 和 70zadd scores 50 user1 70 user2 64 user3 27 user4

运行结果

2、按照分数从低到高的顺序返回有序集合中指定范围内的成员

#获取 scores 集合中从第一个到第四个成员(按照成绩从低到高排过之后的)zrange scores 0 3

运行结果

3、按照分数从高到低的顺序返回有序集合中指定范围内的成员

##获取 scores 集合中从第一个到第四个成员(按照成绩从高到低排过之后的)zrevrange scores 0 3

运行结果

4、返回有序集合中分数在指定区间内的成员

#获取 scores 集合中分数在 50 到 100 之间的所有成员zrangebyscore scores 50 100

运行结果

5、移除有序集合中的一个或多个成员

#从 scores 集合中移除 user4zrem scores user4

运行结果

6、增加有序集合中成员的分数

#将user2的成绩加20zincrby scores 20 user2

运行结果

7、获取有序集合的成员数

zcard scores

运行结果

8、计算有序集合中分数在指定区间内的成员数

#统计成绩在50到100之间的人数zcount scores 50 100

运行结果

9、获取有序集合中成员的分数

zscore scores user2

运行结果

10、获取有序集合中成员的排名

ZRANK 按分数从低到高,ZREVRANK 按分数从高到低

#获取 scores 集合中 user2 的排名(从高到低,排名需要+1)zrevrank scores user2

运行结果


http://www.mrgr.cn/p/23445667

相关文章

ROS学习--添加依赖相关问题

在自定义话题接口时,步骤如下:新建msg文件夹,并在文件夹下新建xxx.msg 在xxx.msg下编写消息内容并保存 在CmakeLists.txt添加依赖和msg文件目录 在package.xml中添加xxx.msg所需的依赖 编译功能包即可生成python与c++头文件其中在CmakeLists.txt中添加依赖和msg文件目录时需…

小程序 rich-text 解析富文本 图片过大时如何自适应?

在微信小程序中&#xff0c;用rich-text 解析后端返回的数据&#xff0c;当图片尺寸太大时&#xff0c;会溢出屏幕&#xff0c;导致横向出现滚动 查看富文本代码 图片是用 <img 标签&#xff0c;所以写个正则匹配一下图片标签&#xff0c;手动加上样式即可 // content 为后…

界面组件DevExpress Blazor UI v23.2 - 支持.NET 8、全新的项目模版

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验&#xff0c;这个UI自建库提供了一套全面的原生Blazor UI组件&#xff08;包括Pivot Grid、调度程序、图表、数据编辑器和报表等&#xff09;。 DevExpress Blazor控件目前已经升级…

Unity入门实践小项目

必备知识点 必备知识点——场景切换和游戏退出 必备知识点——鼠标隐藏锁定相关 必备知识点——随机数和Unity自带委托 必备知识点——模型资源的导入 实践项目 需求分析 UML类图 代码和资源导入 开始场景 场景装饰 拖入模型和添加脚本让场景动起来 开始界面 先用自己写的GUI…

ios上架驳回记录

原文 Review Environment Submission ID: b097ac72-b1de-4abe-b5a9-81f507bb7e64 Review date: April 25, 2024 Version reviewed: 1.2.3 Guideline 4.3(a) - Design - Spam We noticed your app shares a similar binary, metadata, and/or concept as apps submitted to th…

卡诺图学习

目录1、最小项2、最小项与卡诺图之间转换卡诺图根据最小项填写卡诺图根据逻辑函数填写卡诺图3、卡诺图化简方法 1、最小项逻辑函数表达式可以使用其最小项相加来表示最小项的定义 一个函数的某个乘积项包含了函数的全部变量,其中每个变量都以原变量或反变量的形式出现,且仅出…

SpringBoot---------整合Redis

目录 第一步&#xff1a;引入依赖 第二步&#xff1a;配置Redis信息 第三步&#xff1a;选择Spring Data Redis进行操作Redis数据库 ①操作String类型数据&#xff08;用的少&#xff09; ②操作Object类型数据&#xff08;重要&#xff01;&#xff01;&#xff01;&#x…

jdk版本冲突,java.lang.UnsupportedClassVersionError: JVMCFRE003

主要是编辑器所用的jdk版本和项目用的不一致导致的&#xff0c;虽然编译通过了&#xff0c;但是运行是会报错 选好后点击Apply点击ok&#xff0c;然后重新编译一遍项目就可以了

ESP32引脚笔记

ESP32引脚笔记 ESP32建议使用的引脚 可参考下图Euno开发板引脚模拟输入可采用: 32、33、34、35、36、39 数字输出可采用: 上图右侧引脚 SPI : mosi-23, miso-19, clk-18, cs-5 IIC: scl-22, sda-21仅输入引脚 GPIO34~39是GPIs–仅输入的管脚。这些引脚没有内部上拉或下拉电阻。…

pip成功安装gdal的whl文件后,PyCharm仍报错No module named ‘osgeo’

在根据网上的教程,成功pip install 对应的whl文件后,发现PyCharm仍然显示无法调用osgeo。 出现这样的问题,首先关注自己使用的环境,例如我使用的环境是(见下图)但当我打算卸载gdal库后,发现gdal安装的环境地址和我使用的环境地址不同(如下图)啊,原来是安装gdal的环境…

池化整合多元数据库,zData X 一体机助力证券公司IT基础架构革新

引言 近期&#xff0c;云和恩墨 zData X 多元数据库一体机&#xff08;以下简称 zData X&#xff09;在某证券公司的OA、短信和CRM业务系统中成功上线&#xff0c;标志着其IT基础架构完成从集中式存储向池化高性能分布式存储的转变。zData X 成功整合了该证券公司使用的达梦、O…

12 c++版本的坦克大战

前言 呵呵 这大概是 大学里面的 c 贪吃蛇了吧 有一些 面向对象的理解, 但是不多 这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用 坦克大战 #include<iostream> #include<windows.h> #include<conio.h> #include<ctime> #include…

HarmonyOS ArkUI实战开发—状态管理

一、状态管理 在声明式UI编程框架中&#xff0c;UI是程序状态的运行结果&#xff0c;用户构建了一个UI模型&#xff0c;其中应用的运行时的状态是参数。当参数改变时&#xff0c;UI作为返回结果&#xff0c;也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染&…

计算机Windows系统优化小知识

本文涉及计算机Windows系统优化小知识,介绍了注册表、虚拟内存、常用优化工具目录目录什么是注册表优化优化工具什么是注册表注册表是保存所有系统设置数据的存储器。注册表保存了 Windows 运行所需的各种参数和设置,以及应用程序相关的所有信息。从 Windows启动开始,到用户…

CUDA和CUDNN版本切换

介绍了cuda和cudnn版本切换的方法,以及设置环境变量的坑0 背景 在用不同框架做深度学习时,难免会遇到需要不同版本的cuda和cudnn版本的情况,如果把原来版本的卸载掉重新安装新版本,则会影响其它框架的使用,最好的方法是在主机上安装多个版本的cuda和cudnn,需要用到哪种就…

用Python将原始边列表转换为邻接矩阵

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在图论和网络分析中&#xff0c;图是一种非常重要的数据结构&#xff0c;它由节点&#xff…

计算机DIY之接驳线缆

介绍计算机DIY过程中接驳线缆相关知识,CPU供电、主板主供电、显卡供电、SATA供电、大4pin供电、主板接驳、前面板接驳目录目录 接驳线缆 CPU供电: 主板主供电 显卡供电 SATA供电 大4pin供电 主板接驳 前面板接驳接驳线缆电源插头里还有3条ATX电源专有的线,一条绿色线…

【继承和多态】

闭上眼睛&#xff0c;什么都不听.............................................................................................................. 文章目录 前言 一、【继承】 1.1【继承的概念】 1.2【 继承的定义】 1.2.1【定义格式】 1.2.2【继承关系和访问限定符】 1.2…

硬盘保存及维护基本常识

介绍硬盘使用寿命、硬盘供电、硬盘保存相关小知识点目录目录 硬盘使用寿命简介 硬盘供电简介 硬盘保存简介硬盘使用寿命简介硬盘在连续使用3-4年后就需要注意了(一般为质保期时间后一点), 5-6年后就需要更换硬盘了. 五年左右的时候留意更换机械硬盘,如果不是特备重要的数据,可…

使用restful请求华三模拟器上的设备接口数据

一、resful介绍 RESTful采用C/S模型。RESTful客户端为使用Python、Ruby或Java等编程语言开发出的RESTful客户端程序或脚本。RESTful服务器为网络设备。通过RESTful功能配置和维护设备的过程为: (1) 客户端向服务器发送HTTP/HTTPS请求报文,通过HTTP的方法来操作指定的REST…