Redis 五种基本数据结构及基本使用

一、数据结构

二、使用

2.1 String 的使用

Redis String 一个键对应一个值,并且是二进制安全的,值可以是图片或者序列化后的对象。

一个键最大能存储 512 MB。

2.1.1 set 命令的使用

  • set key value
    127.0.0.1:6379> set name yunhu
    OK
    127.0.0.1:6379> get name
    "yunhu"
    
  • 重复对同一个键设置值,导致覆盖
    127.0.0.1:6379> set age 15
    OK
    127.0.0.1:6379> set age 20
    OK
    127.0.0.1:6379> get age
    "20"
    
    15 已经被覆盖了。
  • set key value nx
    • 当 key 不存在时,返回 OK 表示设置成功
      127.0.0.1:6379> get year
      (nil)
      127.0.0.1:6379> set year 2020 nx
      OK
      127.0.0.1:6379> get year
      "2020"
      
    • 当 key 存在时,设置失败返回 nil 值。
      127.0.0.1:6379> get year
      "2020"
      127.0.0.1:6379> set year 1978 nx
      (nil)
      
  • set key value xx
    • 当 key 不存在时,放弃设置,返回空值
      127.0.0.1:6379> get age // age 这个键不存在
      (nil)
      127.0.0.1:6379> set age 18 xx
      (nil)
      
    • 当 key 存在时,可以设置。
      127.0.0.1:6379> set age 20
      OK
      127.0.0.1:6379> set age 18 xx
      OK
      127.0.0.1:6379> get age
      "18"
      

2.1.2 GETSET 命令的使用

GETSET 获取旧值并设置新值。

127.0.0.1:6379> get age
"18"
127.0.0.1:6379> GETSET age 25 // 将 age 设为 25,并且返回旧的值 18
"18"
127.0.0.1:6379> get age // 获取新的值
"25"

2.2 Hash 的使用

Redis Hash 是一个键值对集合,字符类型的 fieldvalue 组成的。

Hash 适合用来存储对象。

每个 Hash 可以存储 2 32 − 1 2^{32}-1 2321个键值对。

127.0.0.1:6379> HMSET student id 1 name "yunhu"
OK
127.0.0.1:6379> HGET student id
"1"
127.0.0.1:6379> HGET student name
"yunhu"

设置 Hash 名是 student,键为 id 的值是 1,键为 name 的值是 yunhu

然后去获取对应键的值。

2.3 List 的使用

Redis List 就是字符串列表。

127.0.0.1:6379> DEL student
(integer) 1
127.0.0.1:6379> lpush student "yunhu" // 将 yunhu 插入 student 列表头部
(integer) 1
127.0.0.1:6379> lpush student alice
(integer) 2
127.0.0.1:6379> lpush student bob
(integer) 3
127.0.0.1:6379> lrange student 0 -1 // 遍历 student 中的元素
1) "bob"
2) "alice"
3) "yunhu"

列表可以存储 个元素。

2.4 set 的使用

Redis Set 是一个无序的集合,底层使用哈希表实现,添加、删除、搜索都为 O ( 1 ) O(1) O(1)

127.0.0.1:6379> DEL student
(integer) 1
127.0.0.1:6379> sadd student alice
(integer) 1
127.0.0.1:6379> sadd student bob
(integer) 1
127.0.0.1:6379> sadd student xiaoming
(integer) 1
127.0.0.1:6379> sadd student bob // 添加两次 bob,但实际上只有一个。
(integer) 0
127.0.0.1:6379> smembers student // 返回集合中的所有的成员
1) "xiaoming"
2) "bob"
3) "alice"

2.5 zset 的使用

zset 与 set 一样都是集合,但是 zset 每个元素关联一个 double 类型的分数,通过这个分数对集合进行从小到大排序。分数可以重复。

127.0.0.1:6379> del student
(integer) 1
127.0.0.1:6379> zadd student 1 yunhu
(integer) 1
127.0.0.1:6379> zadd student 2 alice
(integer) 1
127.0.0.1:6379> zadd student 3 bob
(integer) 1
127.0.0.1:6379> zrangebyscore student 0 1000
1) "yunhu"
2) "alice"
3) "bob"
127.0.0.1:6379> zadd student 0 xiaoming
(integer) 1
127.0.0.1:6379> zrangebyscore student 0 1000
1) "xiaoming"
2) "yunhu"
3) "alice"
4) "bob"

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

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

相关文章

二十三种设计模式第十四篇--策略模式

策略模式:主要围绕一个类的行为或者其算法在运行时更改,也是一种行为型模式。 在软件开发中,我们经常遇到需要根据不同的情况选择不同算法或行为的情况。传统的做法是使用大量的条件语句来实现这种逻辑,但这样的实现方式往往难以…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册9

随着科技的不断进步,机器人技术已经成为了一个重要的领域。在这个领域中,机械结构是机器人设计中至关重要的一部分,它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说,了解机械结构的基础知识,掌…

[MySQL]MySQL表的约束

[MySQL]表的约束 文章目录 [MySQL]表的约束1. 约束的概念2. 空属性(null/not null)3. 默认值(default)4. 列描述(comment)5. 填充零(zerofill)6. 主键(primary key)7. 自增长(auto_increment)8. 唯一键(unique)9. 外键(foreign key) 1. 约束的概念 数据库通过技术手段限制数据的…

ADS笔记,新旧两组仿真数据进行绘图和列表对比

做个笔记,以防遗忘 ADS版本:2023 原理图器件参数的不同,怎么进行对比观看,操作如下 目录 一、数据绘图对比二、数据列表对比 一、数据绘图对比 选择Simulation Setting 然后修改原理图器件的参数,再次重复之前的操作…

MySQL自治平台建设的内核原理及实践(上)

本文整理自美团技术沙龙第75期的主题分享《美团数据库攻防演练建设实践》,系超大规模数据库集群保稳系列(内含4个议题的PPT及视频)的第4篇文章。 本文作者在演讲后根据同学们的反馈,补充了很多技术细节,跟演讲&#xf…

核磁共振常用的文件格式介绍:NIfTI volume 格式 (*.nii), GIFTI 格式 (*.gii), CIFTI 格式 (*.nii)

核磁共振常用的文件格式介绍:NIfTI volume 格式, GIFTI 格式, CIFTI 格式 NIfTI volume 格式 (*.nii)GIFTI 格式 (*.gii)CIFTI 格式 (*.nii)自定义工作台 (wb_view) 文件:Scene file文件 (*.scene)规格文件 (*.spec)Spec file (*.border)Foci (*.foci)Trajectory file (*.t…

【数据结构】栈和队列详解

⭐️ 往期相关文章 ✨链接1:数据结构和算法的概念以及时间复杂度空间复杂度详解 ✨链接2:【数据结构】手撕顺序表 ✨链接3:【数据结构】手撕单链表 ✨链接4:【数据结构】双向带头循环链表 ⭐️ 栈和队列 🌠 栈 栈是…

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(7 月 6 日论文合集)

文章目录 一、分割|语义相关(15篇)1.1 Prompting Diffusion Representations for Cross-Domain Semantic Segmentation1.2 ZJU ReLER Submission for EPIC-KITCHEN Challenge 2023: Semi-Supervised Video Object Segmentation1.3 Multi-Modal Prototypes for Open-Set Semanti…

Kafka学习笔记(基础篇)

目录 Kafka简介 消息队列 Kafka的应用场景 消息队列的两种模型 Kafka集群搭建 Kafka的生产者/消费者/工具 Kafka的基准测试工具 Kafka Java API开发 生产者程序开发 消费者程序开发 生产者使用异步方式生产消息 Kafka中的重要概念 消费者组 幂等性 事务编程 Ka…

故障:启动修复无法修复你的电脑

有台笔记本很久没用了无法开机了,还是用的win7的系统,开机后提示我使用启动修复,但是失败了,提示我启动修复无法修复你的电脑 启动修复无法修复你电脑怎么办_自动修复电脑未正确启动的解决方法-win7之家 1、上网查了下…

图形学 | 期末复习(下)| games101笔记 | 补档

博客基于GAMES101-现代计算机图形学入门-闫令琪,但不是其完整笔记,基于复习要求有一定的删减。考试以图形学入门基本概念和核心研究内容为主,少量公式。即以论述概念为主,涉及少量算法。p13:3:12是对应的games101视频节点。 文章目…

解决printJS打印问题汇总

目录 一、打印预览表格列不全(Element的el-table组件) 1、打印设置“打印缩放” 2、修改el——table的底层代码(如果页面上有多个表格慎用) 一、打印预览表格列不全(Element的el-table组件) 问题描述&a…