【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

这篇具有很好参考价值的文章主要介绍了【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、NoSQL 和 SQL 区别

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

二、认识 Redis

🍀 Redis 诞生于2009年,全称是 Remote Dictionary Server,远程字典服务器,是一个基于 内存的键值型 NoSQL 数据库

🍀 键值(key-value)型,value 支持多种不同数据结构,功能丰富
🍀 单线程,每个命令具备原子性
🍀 低延迟,速度快(基于内存、IO 多路复用、良好的编码)
🍀支持数据持久化
🍀 支持主从集群、分片集群
🍀支持多语言客户端

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

三、Redis 的数据结构介绍

🍀 Redis 是一种 key-value 类型的数据库
🍀 key 一般是 String 类型
🍀 value 的类型多种多样(如下图所示)

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

Redis 命令官网: https://redis.io/commands

四、Redis 通用命令

🍀 通用命令是不分数据类型的,各种数据类型都可以使用的命令
🌼 KEYS:查看符合模板的所有 key
🌼 DEL:删除一个指定的 key
🌼 EXISTS:判断 key 是否存在

🌼 EXPIRE:给一个 key 设置有效期(过期时间)有效期到期时该 key 会被自动删除
🌼 TTL:查看一个 key 的剩余有效时间

  • -1:永不过期
  • -2:已经过期

可通过 help [command] 命令查看某个命令的具体用法
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

五、String 类型

🍃 String 类型(字符串类型)是 Redis 中最简单的存储类型
🍃 value 是字符串
🍃 根据字符串的格式不同,可分为 3 类(String、int、float)
String:普通字符串
int:整数类型(可做自增、自减操作)
float:浮点类型(可做自增、自减操作)

🍃 不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同
🍃 字符串类型的最大空间不能超过 512M

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】


常见命令有:
🌺 SET:添加或修改(如果键值对已存在的话)一个 String 类型的键值对
🌺 GET:根据 key 获取 String 类型的 value
🌺 MSET:批量添加多个 String 类型的键值对
🌺 MGET:根据多个 key 获取多个 String 类型的 value
🌺 INCR:让一个整型的 key 自增 1
🌺 INCRBY:让一个整型的 key 自增指定步长 incrby num 2 【让 num 值自增 2】
🌺 INCRBYFLOAT:让一个浮点类型的数字自增指定步长

🌺 SETNX:添加一个 String 类型的键值对,前提是这个 key 不存在,否则不执行【添加】
🌺 SETEX:添加一个 String 类型的键值对,并且指定有效期

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

六、key 的格式

🌱 Redis 的 key 允许用多个单词形成层级结构
🌱 多个单词之间用【:】分隔

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

🌱 该格式并非固定,可根据自己的需求删除或添加词条

例如项目名称叫【crm】,有 user 和 product 两种不同类型的数据。则可以如下所示定义 key:
① user 相关的 key:crm:user:1
② product 相关的 key:crm:product:1


🌱 如果 Value 是一个 Java 对象。例如一个 User 对象,则可以将对象序列化为 JSON 字符串后存储:

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

七、Hash(散列)类型

💚 Hash 类型(也叫散列)
💚 value 是一个无序字典 【类似 Java 中的 HashMap

💚 Hash 类型可以将对象中的每个字段独立存储,可针对单个字段做增删改查

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】


Hash 的常见命令有:
🌱HSET key field value:添加或修改 Hash 类型 key 的 field 的值
🌱HGET key field:获取一个 Hash 类型 key 的 field 的值
🌱HMSET:批量添加多个 Hash 类型 keyfield 的值
🌱HMGET:批量获取多个 Hash 类型keyfield的值
🌱HGETALL:获取一个 Hash 类型的key 中的所有的 field 和 value
🌱HKEYS:获取一个 Hash 类型的key 中的所有的 field
🌱HVALS:获取一个 Hash 类型的key 中的所有的 value
🌱HINCRBY: 让一个 Hash 类型key 的字段值(field)自增并指定步长
🌱HSETNX:添加一个 Hash 类型的keyfield值,前提是这个 field 不存在,否则不执行

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

八、List 类型

🌼 Redis 中的 List 类型与 Java 中的 LinkedList 类似
🌼 可看做是一个双向链表结构(既可以支持正向检索和反向检索)

🌼 特点:

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

🌼 常用来存储有序数据(如:朋友圈点赞列表,评论列表)

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】


🍃 LPUSH key element ...:向列表左侧插入一个或多个元素
🍃 LPOP key count:移除并返回列表左侧的第一个元素,没有则返回 nil(count:取的个数)
🍃 RPUSH key element ... :向列表右侧插入一个或多个元素
🍃 RPOP key count:移除并返回列表右侧的第一个元素(count:取的个数)
🍃 LRANGE key star end:返回一段角标范围内的所有元素
🍃 BLPOPBRPOP:与 LPOPRPOP 类似(区别:当没有元素时,会等待指定时间,而不是直接返回 nil

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】


❓ 如何利用 List 结构模拟一个?
入口和出口在同一边【后进先出】

❓ 如何利用 List 结构模拟一个队列?
入口和出口在不同边【先进先出】

❓如何利用 List 结构模拟一个阻塞队列?
① 入口和出口在不同边
② 出队时采用 BLPOPBRPOP

九、Set 类型

🍀 Redis 的 Set 结构与 Java 中的 HashSet 类似,可看做是一个 value 为 null 的 HashMap
🍀 因为也是一个 Hash 表,所以具备与 HashSet 类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集、并集、差集等功能

🌱 SADD key member ...:向 set 中添加一个或多个元素
🌱 SREM key member ...: 移除 set 中的指定元素
🌱 SCARD key: 返回 set 中元素的个数
🌱 SISMEMBER key member:判断一个元素是否存在于 set 中
🌱 SMEMBERS key:获取 set 中的所有元素

🌱 SINTER key1 key2 ...:求 key1 与 key2 的交集(key1 和 key2 都有的元素)
🌱 SDIFF key1 key2 ...:求 key1 与 key2 的差集
🌱 SUNION key1 key2 ...:求 key1 和 key2 的并集


将下列数据用 Redis 的 Set 集合来存储:
🍃 张三的好友有:李四、王五、赵六
🍃 李四的好友有:王五、麻子、二狗

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

利用 Set 的命令实现下列功能:
🍃 计算张三的好友有几个
🍃 计算张三和李四有哪些共同好友
🍃 查询哪些人是张三的好友却不是李四的好友
🍃 查询张三和李四的好友总共有哪些人
🍃 判断李四是否是张三的好友
🍃 判断张三是否是李四的好友
🍃 将李四从张三的好友列表中移除

十、SortedSet 类型(可排序)

☃️ Redis 的 SortedSet 是一个可排序的 set 集合
☃️ 与 Java 中的 TreeSet 有些类似
☃️ 但底层数据结构却差别很大
☃️ SortedSet 中的每一个元素都带有一个 score 属性,可以基于 score 属性对元素排序
☃️ 底层实现是跳表(SkipList)加 Hash表

☃️ SortedSet 具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

☃️ 因为 SortedSet 的可排序特性,经常被用来实现排行榜功能


🌼 ZADD key score member:添加一个或多个元素(若已存在,则更新其 score 值)
🌼 ZREM key member:删除指定元素
🌼 ZSCORE key member : 获取指定元素的 score 值
🌼 ZRANK key member:获取指定元素的排名
🌼 ZCARD key:获取 key 中的元素个数
🌼 ZCOUNT key min max:统计 score 值在给定范围内的所有元素的个数
🌼 ZINCRBY key increment member:让指定元素自增,步长为指定的 increment
🌼 ZRANGE key min max:按照 score 排序后,获取指定排名范围内的元素
🌼 ZRANGEBYSCORE key min max:按照score 排序后,获取指定 score 范围内的元素
🌼ZDIFF、ZINTER、ZUNION:求差集、交集、并集

🌼 注意:所有排名默认是升序,如果要降序则在命令的【Z】后面添加 REV


将班级的下列学生得分存入 Redis 的 SortedSet 中:
Jack 85, Lucy 89, Rose 82, Tom 95, Jerry 78, Amy 92, Miles 76
并实现下列功能:
❓ 删除 Tom 同学
❓ 获取 Amy 同学的分数
❓ 获取 Rose 同学的排名
❓ 查询 80 分以下有几个学生
❓ 给 Amy 同学加2分
❓ 查出成绩前 3 名的同学
❓ 查出成绩 80 分以下的所有同学文章来源地址https://www.toymoban.com/news/detail-510809.html

到了这里,关于【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis(二)—— 五大基本数据类型和三大特殊数据类型

    1、常用命令  批量操作: redis可以定义对象  方式(一) :以JSON格式(其实就是key-value格式)保存一个对象 方式(二) : 把对象的两个属性定义成两个key 注意,如果采用第一种方式,那么无法单独取出字段哦~ 2、使用场景 数字int类型的string作为计数器,比如统计文章的

    2024年02月15日
    浏览(38)
  • Redis五大基本数据类型及其使用场景

    Nosql = not only sql(不仅仅是SQL) 关系型数据库:列+行,同一个表下数据的结构是一样的。 非关系型数据库:数据存储没有固定的格式,并且可以进行横向扩展。 NoSQL泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0大数据时代!尤其是超大规

    2024年02月12日
    浏览(38)
  • Redis追本溯源(二)数据结构:String、List、Hash、Set、Zset底层数据结构原理

    Redis 并没有直接用 C 语言的字符串,而是自己搞了一个 sds 的结构体来表示字符串,这个 sds 的全称是 Simple Dynamic String,翻译过来就是“简单的动态字符串”。 安全的二进制存储 资源。关于sds的扩容和缩容下面会进行详细的介绍,这里先不赘述了。 在一些情况中,我们需要

    2024年02月16日
    浏览(54)
  • redis五大类型分析--list(1)

    此篇为对redis五大数据类型中list的分析,希望能有所帮助 listTypePush函数 分析: 该函数将一个元素插入到指定的列表对象 \\\'subject\\\', 插入位置由 \\\'where\\\' 决定是在列表头部还是尾部插入,调用者不需要自己来增加 \\\'value\\\' 的 refcount,该函数会负责处理。 作用: 实现命令函数push

    2024年02月13日
    浏览(37)
  • redis五大类型分析--list(2)

    此篇为对redis五大数据类型中list的分析,希望能有所帮助  listTypeGet函数 分析: 利用createStringObject函数和createStringObjectFromLongLong函数,检查编码类型并获取元素的值 listTypeInsert函数 分析: 对entry的插入操作,在 entry 的位置前或后方插入元素 value  listTypeReplace函数 分析: 替

    2024年02月11日
    浏览(41)
  • Redis-带你深入学习数据类型list

    目录 1、list列表 2、list相关命令 2.1、添加相关命令:rpush、lpush、linsert 2.2、查找相关命令:lrange、lindex、llen 2.3、删除相关命令:lpop、rpop、lrem、ltrim 2.4、修改相关命令:lset 2.5、阻塞相关命令:blpop、brpop 3、应用场景 3.1、消息队列  3.2、最新列表         redis中list并非是一

    2024年02月09日
    浏览(45)
  • 【Redis】五大数据类型

    💭Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及zset(sorted set有序集合)。 Redis的String类型是一种最基本的数据类型,它是一个键值对的存储结构,其中键和值都是字符串类型。String类型的特点是快速存储和读取,适用于存储一些简单的数据,如字符

    2024年02月12日
    浏览(41)
  • Redis五大数据类型

    Redis-Key 官网:https://www.redis.net.cn/order/ 序号 命令语法 描述 1 DEL key 该命令用于在 key 存在时删除 key 2 DUMP key 序列化给定 key ,并返回被序列化的值 3 EXISTS key 检查给定 key 是否存在,存在返回1,否则返回0 4 EXPIRE key seconds 为给定 key 设置过期时间,以秒计 5 EXPIREAT key timestamp E

    2024年02月11日
    浏览(40)
  • Redis的五大数据类型

    概述:String是redis最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等 append命令:append key value,将value值追加到已存在的value值的后面,并追加操作之后的新value的长度。特殊的,当之前redis中没有该键值对存

    2024年02月05日
    浏览(68)
  • Redis入门-redis的五大数据类型+三种特殊的数据类型

    Redis有 五大基本类型 : 字符串(string) 、 哈希(hash) 、 列表(list) 、 集合(set) 和 有序集合(sorted set) 。 字符串(string)是Redis最基本的类型,可以存储任意类型的数据 ,如整数、浮点数、二进制数据等。字符串类型的操作包括设置键值对、获取值、增减值等。

    2024年01月21日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包