Redis基本命令

目录

一、包含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.rhkb.cn/news/317268.html

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

相关文章

ubuntu入门

基础命令 cd 切换命令 ls 查看当前目录下所有的文件 cp a.c b.c 拷贝a.c 到 b.c touch a.c 创建a.c文件 mkdir file 创建文件夹file rm file 删除文件 rmdir 删除test文件夹 rmdir test/ mv 移动文件 mv a.c b.c 把a.c 替换成b.c ifconfig 查看电脑网络信息 rm xx 删…

Mybatis进阶(动态SQL)

文章目录 1.动态SQL1.基本介绍1.为什么需要动态SQL2.基本说明3.动态SQL常用标签 2.环境搭建1.新建子模块2.删除不必要的两个文件夹3.创建基本结构4.父模块的pom.xml5.jdbc.properties6.mybatis-config.xml7.MyBatisUtils.java8.MonsterMapper.java9.MonsterMapper.xml10.测试Mo…

工业互联网通讯协议—欧姆龙(Fins tcp)

一、场景 近期公司要对欧姆龙CP系列设备的数据采集,于是就研究了下欧姆龙的Fins Tcp协议。 二、Fins Tcp 组成字节说明固定头446494E53 FINS对应的ASCII码的十六进制长度4后面剩余指令的长度命令4 握手固定为:00000000 读写固定为:0000000…

Unity 实现新手引导遮罩

Unity 复写OnPopulateMesh 实现新手引导遮罩、包含点击事件触发区域判断 https://download.csdn.net/download/shenliang34/89247117

【第3节】“茴香豆“:搭建你的 RAG 智能助理

目录 1 基础知识1.1.RAG技术的概述1.2 RAG的基本结构有哪些呢?1.3 RAG 工作原理:1.4 向量数据库(Vector-DB ):1.5 RAG常见优化方法1.6RAG技术vs微调技术 2、茴香豆介绍2.1应用场景2.2 场景难点2.3 茴香豆的构建: 3 论文快读4 实践…

15(第十四章,大数据和数据科学)

目录 概述 基本概念 数据仓库/传统商务智能与数据科学的比较 数据科学的过程 大数据 大数据来源 数据湖 机器学习 监督学习 无监督学习 强化学习 扩展 1、数据仓库(Data Warehouse) 2、数据湖(Data Lake) 3、大数据平台1.0 4、数据中台 …

外贸企业邮箱是什么?Zoho Mail——你的专业外贸邮局

外贸企业邮箱是什么?做外贸行业必须要有企业邮箱吗?这是一些外贸企业的困惑。外贸企业邮箱和我们平时使用的个人邮箱有着几方面的不同。一是安全稳定;二是功能丰富性;三是存储空间更大。Zoho Mail企业邮箱在这些方面都能满足外贸企…

OpenCV如何实现背投(58)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV直方图比较(57) 下一篇:OpenCV如何模板匹配(59) 目标 在本教程中,您将学习: 什么是背投以及它为什么有用如何使用 OpenCV 函数 cv::calcBackP…

Java 获取 Outlook 邮箱的日历事件

Java 获取 Outlook 邮箱的日历事件 1.需求描述2.实现方案3.运行结果 IDE:IntelliJ IDEA 2022.3.3 JDK:1.8.0_351 Outlook:Microsoft Office 2016 1.需求描述 比如现在需要获取 Outlook 邮箱中四月的全部的会议安排,如下图所示 …

简单谈谈URL过滤在网络安全中的作用

用户花在网络上的时间越来越多,浏览他们最喜欢的网站,点击电子邮件链接,或利用各种基于网络的 SaaS 应用程序供个人和企业使用。虽然这种不受约束的网络活动对提高企业生产力非常有用,但也会使组织面临一系列安全和业务风险&#…

STM32G030F6P6TR 芯片TSSOP20 MCU单片机微控制器芯片

STM32G030F6P6TR 在物联网(IoT)设备中的典型应用案例包括但不限于以下几个方面: 1. 环境监测系统: 使用传感器来监测温度、湿度、气压等环境因素,并通过无线通信模块将数据发送到中央服务器或云端平台进行分析和监控。…

Windows之隐藏特殊文件夹(自定义快捷桌面程序)

作者主页:点击! 创作时间:2024年5月1日12点55分 祝大家劳动节快乐~ Windows中的特殊文件夹是指一些预定义的文件夹,用于存储特定类型的数据或文件。这些文件夹通常由操作系统或应用程序使用,但用户也可以访问和管理它…

selenium 4.x 入门(环境搭建、八大元素定位)

背景 Web自动化测现状 1. 属于 E2E 测试 2. 过去通过点点点 3. 好的测试,还需要记录、调试网页的细节 一、selenium4.x环境搭建 一键搭建 pip3 install webdriver-helper 有建议要 1.0.1 版本的,但本人按上面的是可以正常使用(看…

【docker 】Windows10安装 Docker

安装 Hyper-V Hyper-V 是微软开发的虚拟机,仅适用于 Windows 10。 按键: win键X ,选着程序和功能 在查找设置中输入:启用或关闭Windows功能 选中Hyper-V 点击确定 安装 Docker Desktop for Windows Docker Desktop 官方下载…

013、Python+fastapi,第一个后台管理项目走向第13步:建立python+fastapi项目,创建cache模块

一、说明 在今天学习RuoYi-Vue3-FastAPI的代码过程中,我遇到了几个问题,下面说说自己的感想 二、自定义的log装饰器 源码中是log_annotation.py,代码也没什么好说的,这个知识点到处都是文章,可以在csdn上搜索学习&a…

数据结构—C语言实现双向链表

目录 1.双向带头循环链表 2.自定义头文件: 3.List.cpp 文件 3.1 newnode()函数讲解 3.2 init() 函数 初始化 3.3 pushback()函数 尾插 3.4 pushfront()函数 头插 3.5 popback() 尾删 3.6 popfront() 函数 头删 3.7 insert()函数 在pos之后插入 3.8 popbac…

ZooKeeper 环境搭建详细教程之三(真集群)

ZooKeeper 搭建详细步骤之三(真集群) ZooKeeper 搭建详细步骤之二(伪集群模式) ZooKeeper 搭建详细步骤之一(单机模式) ZooKeeper 及相关概念简介 真集群搭建 搭建 ZooKeeper 真集群涉及多个步骤,包括准备环境、配置文件设置、启动服务以及验证集群状态。 以下是一个简…

AC+AP三层组网实验(华为)

一,技术简介 APAC架构是一种常见的无线局域网(WLAN)组网方式,主要由接入点(Access Point,简称AP)和接入控制器(Access Controller,简称AC)组成。 在APAC架构…

PotatoPie 4.0 实验教程(25) —— FPGA实现摄像头图像直方图均衡变换

图像的直方图均衡是什么? 图像的直方图均衡是一种用于增强图像对比度的图像处理技术。在直方图均衡中,图像的像素值被重新分配,以使得图像的直方图变得更均匀,即各个像素值的分布更加平衡。这意味着直方图中每个像素值的频率大致…

免费ChatGPT合集——亲测免费

1、YesChat 无需登录 网址:YesChat-ChatGPT4V Dalle3 Claude 3 All in One Freehttps://www.yeschat.ai/ 2. 讯飞星火 要登录 讯飞星火大模型-AI大语言模型-星火大模型-科大讯飞 3.通义千问 要登录 通义我是通义,一个专门响应人类指令的…