【Redis】数据类型操作二 (Set/Hash/Zset)

news2024/11/26 0:43:18

文章目录

    • 3、Redis集合(Set)
    • 4、 Redis哈希(Hash)
    • 5、Redis有序集合Zset(sorted set)
    • 实操
      • 3、Redis集合(Set)
      • 4、 Redis哈希(Hash)
      • 5、Redis有序集合Zset(sorted set)

3、Redis集合(Set)

  • Redis Set 是String类型的无序集合。一个key集合可以对应多个value元素。
  • Redis Set 可以自动排重,并且提供了判断某个value是否在一个key集合内的接口。
  • Redis Set 底层其实是一个value为null的Hash表,所以添加,删除,查找的复杂度都是O(1)。
  • Redis Set 数据结构是dict字典,字典是用哈希表实现的。
  • Java中HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象。Redis的set结构也是一样,它的内部也使用hash结构,所有的value都指向同一个内部值。
  • 将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略

sadd <key> <value1> <value2> <value3> …
sadd k1 v1 v2 v3

  • 取出该集合的所有值。

smembers <key>

  • 判断集合<key>是否为含有该值,有1,没有0

sismember <key> <value>

  • 返回该集合的元素个数。

scard <key>

  • 删除集合中的某个元素。

srem <key><value1><value2> …

  • 随机从该集合中吐出一个值。

spop <key>

  • 随机从该集合中取出n个值。不会从集合中删除 。

srandmember <key> <n>
srandmember k1 4

  • 把集合中一个值从一个集合移动到另一个集合

smove <source> <destination> value
smove k1 k2 v11

  • 返回两个集合的交集元素。

sinter <key1> <key2>

  • 返回两个集合的并集元素。

sunion <key1> <key2>

  • 返回两个集合的差集元素(key1中的,不包含key2中的)

sdiff <key1> <key2>

4、 Redis哈希(Hash)

  • Redis Hash 是一个String类型的 field 和 value 的映射表,类似Java里面的 Map<String,Object>,适合用于存储对象。
  • Redis Hash 的 key 表示一个哈希表,key中以 field-value的形式存储。
  • 如:用户ID为key,存储的field-value包含姓名,年龄,生日等信息。
  • Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。
  • 给<key>集合中的<field>键赋值<value>

hset <key> <field> <value>
hset usr1 name Rice

  • 批量设置hash的值

hmset <key1> <field1> <value1> <field2> <value2> …
hset usr1 name Rice age 12 gender M

  • 从<key1>集合<field>取出 value

hget <key1> <field>
hget usr1 name

  • 查看哈希表 key 中,给定域 field 是否存在。

hexists <key1> <field>
hexists usr1 name

  • 列出该hash集合的所有field

hkeys <key>

  • 列出该hash集合的所有value

hvals <key>

  • 为哈希表 key 中的域 field 的值加上增量 1 -1

hincrby <key> <field> <increment>

  • 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .

hsetnx <key> <field> <value>

5、Redis有序集合Zset(sorted set)

  • Redis 有序集合 Zset,value由评分(score)和 元素(member)组成。
  • 元素(member)是唯一的,但评分可以重复 。
  • 评分(score)用来对元素(member)排序,默认从最低到最高排序。
  • 可以根据评分(score)或者次序(position)来获取一个范围的元素。
  • SortedSet(zset)是Redis提供的一个非常特别的数据结构,一方面它等价于Java的数据结构Map<String, Double>,可以给每一个元素value赋予一个权重score,另一方面它又类似于TreeSet,内部的元素会按照权重score进行排序,可以得到每个元素的名次,还可以通过score的范围来获取元素的列表。
  • zset底层使用了两个数据结构
    (1)hash,hash的作用就是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score值。
    (2)跳跃表,跳跃表的目的在于给元素value排序,根据score的范围获取元素列表。
  • 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

zadd <key> <score1> <value1> <score2> <value2>…
zadd topn 300 java 200 c++ 500 mysql 100 redis

  • 返回有序集 key 中,下标在 之间的元素

zrange <key> <start> <stop> [withscores]
zrange topn 0 -1 withscores
(start 0, stop -1, 会返回元素。withscores 会同时返回score和元素)

  • 返回有序集 key 中,所有min <= score <= max 的member,结果默认递增排列

zrangebyscore <key> <min> <max> [withscores] [limit offset count]
zrangebyscore topn 100 500
(有序集成员默认按 score 值递增排列 )

  • 返回有序集 key 中,所有min <= score <= max 的member,结果按照递减排列

zrevrangebyscore <key> <max> <min> [withscores] [limit offset count]

  • 为元素的score加上增量

zincrby <key> <increment> <value>

  • 删除该集合下,指定值的元素

zrem <key> <value>

  • 统计该集合,分数区间内的元素个数

zcount <key> <min> <max>

  • 返回该值在集合中的排名,从0开始。

zrank <key> <value>


实操

3、Redis集合(Set)

set元素无序
在这里插入图片描述
set中value是否存在
在这里插入图片描述
删除与随机弹出元素
在这里插入图片描述
随机取出两个元素
在这里插入图片描述
移动元素
在这里插入图片描述
在这里插入图片描述

4、 Redis哈希(Hash)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、Redis有序集合Zset(sorted set)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计高校篮球训练管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

Python如何做自动化测试?

众做周知&#xff0c;自动测试的优势是显而易见的&#xff0c;它可以大大节省我们的时间&#xff0c;提高我们的工作效率。那么Python如何做自动化测试呢&#xff1f;本文将用Python编写一个简单的测试用例&#xff0c;并指导大家写做自动化测试的代码。如果大家对这个内容感兴…

基于java+springboot+mybatis+vue+mysql的会员制医疗预约服务管理信息系统

项目介绍 会员制医疗预约服务管理信息系统是针对会员制医疗预约服务管理方面必不可少的一个部分。在会员制医疗预约服务管理的整个过程中&#xff0c;会员制医疗预约服务管理系统担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类的管理系统也在不断改进。系…

[计算机网络微课]第三章 数据链路层

数据链路层 概述 数据链路层在网络体系结构中的地位 主机 H1 给主机 H2 发送数据&#xff0c;中间要经过 3 个路由器和电话网、局域网以及广域网等多种网络。从五层协议原理体系结构角度来看 为了专注数据链路层内容&#xff0c;这里我们只考虑数据链路层&#xff0c;而不考…

体外诊断丨艾美捷游离维多珠单抗ADA水平检测试剂盒

introduction: Crohns disease in patients with moderate to severe active ulcerative colitis, routine treatment or tumor necrosis factor α &#xff08;TNF α&#xff09; Antagonists can also be treated with vidolizumab. Vedolizumab is a humanized monoclona…

并查集引入

目的 主要是处理一些不相交集合的合并问题&#xff0c;比如&#xff1a;求连通子图&#xff0c;求最小生成树的克鲁斯卡尔算法以及最近公共祖先&#xff08;LCA&#xff09;等 简单应用就是连通图&#xff0c;将元素进行合并&#xff0c;如果要优化路径的话可以利用数据压缩 …

大学生简单抗击疫情静态HTML网页设计作品 DIV布局疫情感动人物介绍网页模板代码 DW学生抗疫逆行者网站制作成品下载

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

vTESTstudio入门到精通 - vTESTstudio工具栏介绍_Home

继上篇介绍File功能模块之后&#xff0c;今天我们来介绍vTESTstudio工程使用过程的种的另外一个重要的工具栏Home&#xff0c;这块将是我们使用vTESTstudio编程中使用最多的一个功能模块。话不多说&#xff0c;下面我们就来一一介绍该功能栏能在我们编程的时候做哪些事情。 2、…

网关服务限流熔断降级【Gateway+Sentinel】

目录 第一步&#xff1a;启动sentinel-dashboard控制台 第二步&#xff1a;在网关服务中引入sentinel依赖 第三步&#xff1a;在网关服务application.yml中配置sentinel 第四步&#xff1a;通过网关进入服务 再进入sentinel控制台查看链路情况 第一步&#xff1a;启动sen…

一个简单的dw网页制作作业,学生个人html静态网页制作成品代码——怪盗基德动漫主题网页成品(15页)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

【mmdetection系列】mmdetection之evaluate评测

1.configs 还是以yolox为例&#xff0c;配置有一项evaluation。用于配置评估是用什么评价指标评估。 https://github.com/open-mmlab/mmdetection/blob/master/configs/yolox/yolox_s_8x8_300e_coco.py#L151 max_epochs 300 num_last_epochs 15 interval 10evaluation di…

LVS 负载均衡

LVS 负载均衡 本篇主要介绍一下 lvs 是什么 以及它的 nat 模式的搭建 配合nginx来演示 1.概述 LVS 是 Linux Virtual Server 的简写 (Linux 虚拟服务器 ), 是由章文嵩博士主导, 它虚拟出一个服务器集群,然后进行负载均衡的项目, 目前LVS 已经被集成到Linux内核模块中了, 外部请…

直播弹幕系统(三)- 直播在线人数统计

直播弹幕系统&#xff08;三&#xff09;- 直播在线人数统计前言一. 在线人数统计功能实现1.1 Redis整合1.2 在线人数更新1.3 演示前言 上一篇文章整合RabbitMQ进行消息广播和异步处理 写完了消息的广播、削峰、异步处理业务逻辑等操作。完成了实时共享功能。 不过写到后面发…

Netcat介绍及安装使用

目录 介绍 Linux 安装 Windows安装 1.下载安装包 2.解压安装包 3.安装路径加入系统变量 Netcat命令参数 使用Netcat互相通信 1.创建一个服务端 2.创建一个客户端&#xff08;连接服务端&#xff09; 介绍 Netcat 是一款简单的Unix工具&#xff0c;使用UDP和TCP协议。…

七、Docker 安装Tomcat(流程、注意点、实操)

1、从中央仓库搜索tomcat 命令:docker search tomcat 也可以从官网查找,地址:Docker Hub 2、从中央仓库拉取tomcat 命令:docker pull tomcat:8.0 这里我们选择8.0 版本tomcat 3、查看镜像 命令:docker images 4、运行镜像 命令:docker run -d

如何从内存卡恢复丢失的数据?简单内存卡(SD卡)数据恢复方法分享

SD卡&#xff0c;也就是内存卡&#xff0c;在日常使用中有着体积小、存储量大的优点&#xff0c;被我们用来存储一些重要的数据。相机是使用SD卡的场景之一。目前大多数相机都使用SD卡来存储相关数据&#xff0c;这不仅是因为SD容量的优势&#xff0c;而且其运行速度也比较快&a…

苹果手机有什么好玩的app推荐

creativeclock 苹果手机有什么好玩的app推荐&#xff0c;iPhone时钟app推荐下载。 An elegant clock application that contains various creative clock styles and widgets. FlipClock, PolarClock, DigitalClock, RouletteClock, AnalogClock … and so on. view on Appsto…

Matplotlib学习笔记(第二章 2.1.5 图形的绘制过程)

本教程旨在展示使用Matplotlib的单个可视化的开始、中间和结束。 我们将从一些原始数据开始&#xff0c;最后保存一个定制的可视化图形。 在此过程中&#xff0c;我们尝试使用Matplotlib来突出一些整洁的特性和最佳实践。 注意&#xff1a;本教程基于克里斯莫菲特这篇优秀的博…

【图像去噪】鲁棒PCA图像去噪【含Matlab源码 463期】

⛄一、图像去噪及滤波简介 1 图像去噪 1.1 图像噪声定义 噪声是干扰图像视觉效果的重要因素&#xff0c;图像去噪是指减少图像中噪声的过程。噪声分类有三种&#xff1a;加性噪声&#xff0c;乘性噪声和量化噪声。我们用f(x,y&#xff09;表示图像&#xff0c;g(x,y&#xff0…

jmeter性能测试-Arrivals 线程组解释

&#x1f4cc; 博客主页&#xff1a; 程序员二黑 &#x1f4cc; 专注于软件测试领域相关技术实践和思考&#xff0c;持续分享自动化软件测试开发干货知识&#xff01; &#x1f4cc; 公号同名&#xff0c;欢迎加入我的测试交流群&#xff0c;我们一起交流学习&#xff01; 目录…