当前位置: 首页 > article >正文

Redis3:Hash类型、List类型、Set类型、SortedSet类型

欢迎来到“雪碧聊技术”CSDN博客!

在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。

让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!感谢您的关注与支持,期待在“雪碧聊技术”与您共同成长!

目录

一、Hash类型

1、不使用Hash类型时存在的问题

2、使用Hash类型解决上述问题

3、Hash类型的常见命令

二、List类型

1、介绍

2、List类型的特征

3、List类型的常见命令

4、思考

三、Set类型

1、介绍

2、Set类型的特征

3、Set类型的常见命令

4、案例

四、SortedSet类型

1、介绍

2、SortedSet类型的特征

3、SortedSet类型的常见命令

4、案例


一、Hash类型

1、不使用Hash类型时存在的问题

如下图,此时value是字符串的形式,此时想修改name、age属性,就十分麻烦,因为获取时太费劲了。

2、使用Hash类型解决上述问题

可以将value中的每个字段,单独存储,这样方便使用每个字段。

3、Hash类型的常见命令

举例:

二、List类型

1、介绍

Redis中的List类型与Java中的LinkedList类似,可以看做一个双向链表。既可以正向检索也可以反向检索。

2、List类型的特征

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

因此我们一般使用List类型的value,来保存对顺序有要求的数据,比如:朋友圈点赞列表、评论列表等。

3、List类型的常见命令

举例:

下面演示BLPOP命令(阻塞式的弹出元素,即:没有元素时,不返回空,而是先等一段时间):

4、思考

三、Set类型

1、介绍

redis中的Set结构,与Java中的HashSet类似,因此具备与HashSet类似的特征。

2、Set类型的特征

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

3、Set类型的常见命令

举例:

4、案例

实现:

192.168.6.100:6379[1]> SADD zhangsan lisi wangwu zhaoliu
(integer) 3
192.168.6.100:6379[1]> SADD lisi wangwu mazi ergou
(integer) 3
192.168.6.100:6379[1]> SCARD zhangsan
(integer) 3
192.168.6.100:6379[1]> SINTER zhangsan lisi  //求两集合的交集
1) "wangwu"
192.168.6.100:6379[1]> SDIFF zhangsan lisi   //求两集合的差集
1) "zhaoliu"
2) "lisi"
192.168.6.100:6379[1]> SUNION zhangsan lisi  //求两集合的并集
1) "wangwu"
2) "lisi"
3) "zhaoliu"
4) "mazi"
5) "ergou"
192.168.6.100:6379[1]> SISMEMBER zhangsan lisi
(integer) 1
192.168.6.100:6379[1]> SISMEMBER lisi zhangsan
(integer) 0
192.168.6.100:6379[1]> SREM zhangsan lisi
(integer) 1
192.168.6.100:6379[1]>

四、SortedSet类型

1、介绍

redis中的SortedSet是一个可排序的set集合,与Java中的TreeSet有些类似,但二者底层数据结构却有很大差别。

SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。

2、SortedSet类型的特征

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

因为SortedSet具有可排序的特征,因此经常被用来实现排行榜(即:top1、top2.....)这样的功能。

3、SortedSet类型的常见命令

4、案例

实现:

第一步:使用redis的SortedSet类型的key,存入上述的数据

可见,此时每个同学的分数,正好充当SortedSet类型中的score属性(排名的依据)。

第二步:实现要求

192.168.6.100:6379[1]> ZREM student Tom            //删除Tom同学
(integer) 1
192.168.6.100:6379[1]> ZSCORE student Amy          //获取Amy同学的分数
"92"
192.168.6.100:6379[1]> ZRANK student Rose          //获取Rose同学的排名(升序)
(integer) 2
192.168.6.100:6379[1]> ZREVRANK student Rose       //获取Rose同学的排名(降序)
(integer) 3
192.168.6.100:6379[1]> ZCARD student               //查询student键中,有多少元素
(integer) 6
192.168.6.100:6379[1]> ZCOUNT student 0 80         //查询80分以下有几个学生
(integer) 2
192.168.6.100:6379[1]> ZINCRBY student 2 Amy       //给Amy同学加2分
"94"
192.168.6.100:6379[1]> ZRANGE student 0 2          //查出成绩前3名的同学(升序)
1) "Miles"
2) "Jerry"
3) "Rose"
192.168.6.100:6379[1]> ZREVRANGE student 0 2       //查出成绩前3名的同学(降序)
1) "Amy"
2) "Lucy"
3) "Jack"
192.168.6.100:6379[1]> ZRANGEBYSCORE student 0 80  //查出成绩80分以下的所有同学
1) "Miles"
2) "Jerry"
192.168.6.100:6379[1]>

以上就是redis中的Hash类型、List类型、Set类型、SortedSet类型的全部内容,想了解更多关于redis的知识,请关注本博主~~


http://www.kler.cn/a/385388.html

相关文章:

  • 如何封装一个axios,封装axios有哪些好处
  • 【数据集】【YOLO】【目标检测】道路结冰数据集 1527 张,YOLO目标检测实战训练教程!
  • 串口接收,不定长数据接收
  • 【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
  • 得物多模态大模型在重复商品识别上的应用和架构演进
  • fpga生成pwm简单案例
  • Am I Isolated:一款安全态势基准测试工具
  • 【数据集】【YOLO】【目标检测】摔跤识别数据集 5097 张,YOLO行人摔倒识别算法实战训练教程!
  • 自动打电话机器人,好用吗?
  • Trimble X12三维激光扫描仪正在改变游戏规则【上海沪敖3D】
  • UE4/5 编译报错 MSB3073
  • 【Python图像处理】进阶实战指南
  • Spark集群模式搭建之Yarn模式
  • NoETL自动化指标平台为数据分析提质增效,驱动业务决策
  • 域名+服务器+Nginx+宝塔使用SSL证书配置HTTPS
  • 营业执照OCR识别API接口如何用C#调用
  • 系统架构设计师论文:论基于构件的软件开发方法及其应用
  • 【Linux】拆分详解 - vim / gcc / makefile
  • 硬币游戏赢家 | 动态规划
  • 【论文笔记】Token Turing Machines
  • 【目标跟踪】目标跟踪算法资料笔记
  • 【Python】轻松实现机器翻译:Transformers库使用教程
  • [linux]docker项目部署
  • 【论文笔记】VCoder: Versatile Vision Encoders for Multimodal Large Language Models
  • 100+SCI科研绘图系列教程(R和python)
  • A day a tweet(sixteen)——The better way of search of ChatGPT