Redis的五种常用数据类型

在这里插入图片描述

1.字符串

String的数据结构是简单的Key-Value模型,Value可以是字符串,也可以是数字。

String是Redis最基本的类型,是二进制安全的,意味着Redis的string可以包含任何数据,比如jpg图片。

一个redis中字符串value最大是512M

常用命令

set 添加键值对

get 查询对应键值

append 将给定的追加到原值的末尾

strlen 获得值得长度

setnx 只有在key不存在时 设置key的值

incr

将key中存储的数字值增1

只能对数字值操作,如果为空,新增值为1

decr

将key中存储的数字减1

只能对数字值操作,如果为空,新增值为-1

incrby / decrby <步长> 将key中存储的数字值增减。自定义步长

mset …

同时设置一个或多个键值对

mget …

同时获取一个或多个value

msetnx …

同时设置一个或多个key-value对,当且仅当所有给定key都不存在。(原子性操作)

getrange <起始位置><结束位置>

获得值得范围,包括起始和终止位置

setrange <起始位置>

用 覆写所存储的字符串值,从<起始位置>开始(索引从0开始)

setex <过期时间>

设置键值的同时,设置过期时间,单位秒

getset

设置新值同时获取旧值

2.列表List

在这里插入图片描述

单键多值
Redis列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边),底层实际是个双向链表
Lpush:表示的是向链表的左添加,也就是向链表的头添加
Rpush:表示的是向链表的右添加,也就是向链表的尾添加

常用命令

lpush/push… … 从左边/右边插入一个或多个值。

lpop/rpop 从左边/右边吐出一个值。值在键就在,值无键亡。

rpoplpush 从列表右边吐出一个值,插到列表左边。

lrange

按照索引下标获得元素(从左到右)

lrange mylist 0-1 0左边第一个,-1右边第一个,(0-1表示获取所有)

lindex 按照索引下标获得元素(从左到右)

llen 获得列表长度,

linsert before 在的后面插入插入值lrem

从左边删除n个value(从左到右)

lset 将列表key下标为index的值替换成value

数据结构

List的数据结构为快速链表quickList。

首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也即是压缩列表。

它将所有的元素紧挨着一起存储,分配的是一块连续的内存。当数据量比较多的时候才会改成

quicklist。

因为普通的链表需要的附加指针空间太大,会比较浪费空间。比如这个列表里存的只是int类型的

数据,结构上还需要两个额外的指针prev和next。

Redis将链表和ziplist结合起来组成了quicklist。也就是将多个ziplist使用双向指针串起来使用。

这样既满足了快速的插入删除性能,又不会出现太大的空间冗余。

3.集合Set

在这里插入图片描述
Redis 的集合是字符串的无序集合。
在Set集合当中,是不允许有重复的。
set是通过hash table实现的,可以进行添加、删除和查找。对集合我们可以取并集,交集,差集.

与list类似是一个列表的功能,特殊在于set可自动去重。Redis的Set是string类型的无序集合,它底层其实是一个value为null的hash表,添加,删除,查找复杂度都是O(1)

常用命令

sadd … 将一个或多个member元素加入到集合key中,已经存在的

member元素将被忽略

smembers 取出该集合的所有值。,

sismember判断集合是否为含有该值,有1,没有0scard返回

该集合的元素个数。,

srem …删除集合中的某个元素。,spop 随机从该集合中吐出一

个值。

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

smove value 把集合中一个值从一个集合移动到另一个集合·

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

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

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

数据结构

Set数据结构是dict字典,字典是用哈希表实现的

内部使用hash结构,所有的value都指向同一个内部值

4.Zset

Redis 的有序集合类似于 Redis 的集合,字符串不重复的集合。

Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序

集合的每个成员都关联了一个评分(score ) ,这个评分( score )被用来按照从最低分到最高分的方

式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复的。

因为元素是有序的,所以你也可以很快的根据评分( score )或者次序( position)来获取一个范围的

元素。

访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列

表。

常用命令:

zadd … 将一个或多个member元素及其score值

加入到有序集key当中。

uzrangie [WITHSCORES] 返回有序集key 中,下标在

间的元素

带WITHSCORES,可以让分数一起和值返回到结果集。

vzrangebyscore key minmax [withscores] [limit offset count] 返回有序集key中,所有

score值介于min和max之间(包括等于min或 max )的成员。有序集成员按score值递增(从小到大)

次序排列。

zrevrangebyscore key maxmin [withscores] [limit offset count] 同上,改为从大到小排列。

zincrby 为元素的score加上增量.zrem 删除该集合

下,指定值的元素

zcount 统计该集合,分数区间内的元素个数zrank 返回该值

在集合中的排名,从0开始。

数据结构

zset是Redis提供的一个特别的数据结构,一方面等价于Java的数据结构Map<String,Double>,可

以给每一个元素value赋予一个权重score,另一方面又类似于TreeSet,内部的元素会按照权重

score进行排序,可以得到每个元素的名次,还可以通过score的范围来获取元素的列表。

zset底层使用了两种数据结构

(1)hash,作用是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找

到相应的score值

(2)跳跃表,跳跃表的目的在于给元素value排序,根据score的范围获取元素列表

5.哈希Hash

在这里插入图片描述
Redis 的哈希是键值对的集合。
Redis 的哈希值是字符串字段和字符串值之间的映射,因此它们被用来表示对象,还有用户信息之类的,经常变动的信息。
Hash更适合用于对象的存储,String更适合字符串存储。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象

Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。当field-value长

度较短且个数较少时,使用ziplist,否则使用hashtable

常用命令

hset 给集合中的键赋值

hget 从集合取出value v

hmset … 批量设置hash的值

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

hkeys 列出该hash集合的所有field

hvals 列出该hash集合的所有 valuee

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

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

数据结构

Hash类型对应的数据结构是两种: ziplist(压缩列表),hashtable(哈希表)。当field-value长度较

短且个数较少时,使用ziplist,否则使用hashtable。

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

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

相关文章

AT9110H-单通道低压 H桥电机驱动芯片

AT9110H能够驱动一个直流有刷电机或其它诸如螺线管的器件。输出驱动模块由PMOSNMOS功率管构成的H桥组成&#xff0c;以驱动电机绕组。AT9110H能够提供高达12V1A的驱动输出。 AT9110H是SOP8封装&#xff0c;且是无铅产品&#xff0c;符合环保标准。 AT9110H具有一个PWM (IN1/IN2…

SpringBoot-黑马程序员-学习笔记(一)

8.pom文件中的parent 我们使用普通maven项目导入依赖时&#xff0c;通常需要在导入依赖的时候指定版本号&#xff0c;而springboot项目不需要指定版本号&#xff0c;会根据当前springboot的版本来下载对应的最稳定的依赖版本。 点开pom文件会看到这个&#xff1a; 继承了一个…

arm-三盏灯流水

.text .global _start _start: 1.设置GPIOE寄存器的时钟使能 RCC_MP_AHB4ENSETR[4]->1 0x50000a28 LDR R0,0x50000A28 LDR R1,[R0] ORR R1,R1,#(0x3<<4) 第四位第五位都设置为1 STR R1,[R0] 写回2.设置PE10管脚为输出模式 GPIOE_MODER[21:20]->01 0x5000…

扭线机控制

扭线机属于线缆加工设备&#xff0c;线缆加工设备种类非常多。有用于网线绞合的单绞&#xff0c;双绞机等&#xff0c;有关单绞机相关算法介绍&#xff0c;大家可以查看专栏相关文章&#xff0c;有详细介绍&#xff0c;常用链接如下&#xff1a; 线缆行业单绞机控制算法&#…

【软考】9.1 顺序表/链表/栈和队列

《线性结构》 顺序存储和链表存储 每个元素最多只有一个出度和一个入度&#xff0c;表现为一条线状链表存储结构&#xff1a;每个节点有两个域&#xff0c;即数据&#xff0c;指针域&#xff08;指向下一个逻辑上相邻的节点&#xff09; 时间复杂度&#xff1a;与其数量级成正…

【Docker】简易版harbor部署

文章目录 依赖于docker-compose下载添加执行权限测试 安装harbor下载解压修改配置文件部署配置开机自启动登录验证 使用harbor登录打标签上传下载 常见问题 依赖于docker-compose 下载 curl -L “https://github.com/docker/compose/releases/download/2.22.0/docker-compose-…

基于SVM+TensorFlow+Django的酒店评论打分智能推荐系统——机器学习算法应用(含python工程源码)+数据集+模型(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型训练及保存3. 模型应用 系统测试1. 训练准确率2. 测试效果3. 模型应用 相关其它博客工程源代码下载其它资料下载 前言 本项目以支持向量机&#xff08;SVM&#xff09;技术为核心&#xff0c;…

C语言 - 数组

目录 1. 一维数组的创建和初始化 1.1 数组的创建 1.2 数组的初始化 1.3 一维数组的使用 1.4 一维数组在内存中的存储 2. 二维数组的创建和初始化 2.1 二维数组的创建 2.2 二维数组的初始化 2.3 二维数组的使用 2.4 二维数组在内存中的存储 3. 数组越界 4. 数组作为函数参数 4.1…

【Vue面试题十一】、Vue组件之间的通信方式都有哪些?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;Vue组件之间的通信方式都…

Synchronized的实现和锁升级

1.JVM是如何处理和识别Synchronized的&#xff1f; 我们从字节码角度分析synchronized的实现&#xff1a; Synchronized(锁对象){}同步代码块底层实现方式是monitorenter和monitorexit指令。 修饰普通同步方法时底层实现方式是执行指令会检查方法是否设置ACC_SYNCHRONIZED&am…

从0到1基于ChatGLM-6B使用LoRA进行参数高效微调

从0到1基于ChatGLM-6B使用LoRA进行参数高效微调 吃果冻不吐果冻皮 ​ 关注他 cliniNLPer 等 189 人赞同了该文章 ​ 目录 收起 ChatGLM-6B简介 具备的一些能力 局限性 LoRA 技术原理 环境搭建 数据集准备 数据预处理 参数高效微调 单卡模式模型训练 数据并行模式模型训练 模型推…

Nginx详细学习记录

1. Nginx概述 Nginx是一个轻量级的高性能HTTP反向代理服务器&#xff0c;同时它也是一个通用类型的代理服务器&#xff0c;支持绝大部分协议&#xff0c;如TCP、UDP、SMTP、HTTPS等。 1.1 Nginx基础架构 Nginx默认采用多进程工作方式&#xff0c;Nginx启动后&#xff0c;会运行…

阿里云RDS关系型数据库详细介绍_多版本数据库说明

阿里云RDS关系型数据库大全&#xff0c;关系型数据库包括MySQL版、PolarDB、PostgreSQL、SQL Server和MariaDB等&#xff0c;NoSQL数据库如Redis、Tair、Lindorm和MongoDB&#xff0c;阿里云百科分享阿里云RDS关系型数据库大全&#xff1a; 目录 阿里云RDS关系型数据库大全 …

编译工具链 之二 详解 ELF 格式及标准、UNIX 发展、ABI

在计算机及嵌入式系统中&#xff0c;二进制文件也有一定的标准格式&#xff0c;通常会包含在各平台的应用程序二进制接口 &#xff08;Application Binary Interface&#xff0c;ABI&#xff09;规范中。它是编译工具链必须要遵守的规范&#xff08;编译工具链产生符合 ABI 的二…

C (1094) : DS双向链表—前驱后继

Description 在双向链表中&#xff0c;A有一个指针指向了后继节点B&#xff0c;同时&#xff0c;B又有一个指向前驱节点A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点&#xff0c;也能从链表尾节点开始遍历所有节点。 对于给定的一列数据&#xff0c;按照给定的…

Legion Y9000X IRH8 2023款(82Y3)原装出厂OEM预装Windows11系统

lenovo联想电脑笔记本拯救者原厂win11系统镜像 下载链接&#xff1a;https://pan.baidu.com/s/15G01j7ROVqOFOETccQSKHg?pwdt1ju 系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;32G或以上的U盘 文件格式&#xff1a;ISO…

创作2周年?浅记一下~

前言&#xff1a; 最近确实有点缺乏去更新博客的动力&#xff0c;一晃两年过去了&#xff0c;其实也是我新入职公司的两年&#xff0c;两年虽然不长&#xff0c;但是确实发生了太多事情值得去记录下来... 机缘 说是机缘也不是算是&#xff0c;第一次写博客是刚好在CSDN里面查资…

CentOS如何查找java安装路径

目 录 背景 详细步骤 1.使用指令查看有关javad安装路径 2.填入java路径 3.查找java安装路径 4.配置文件展示 背景 准备部署分布式hadoop的时候&#xff0c;校验hadoop版本发现java没配置 但是又有java版本信息 详细步骤 1.使用指令查看有关javad安装路径 java -verb…

高级IO(Linux)

高级IO 五种IO模型高级IO重要概念同步通信 vs 异步通信阻塞 vs 非阻塞 非阻塞IOfcntl实现函数SetNoBlock轮询方式读取标准输入 I/O多路转接之select初识selectselect函数原型参数解释参数timeout取值关于fd_set结构关于timeval结构函数返回值三级目录 理解select执行过程socket…

微信小程序——CSS3渐变

SS3 渐变&#xff08;gradients&#xff09;可以在两个或多个指定的颜色之间显示平稳的过渡。CSS3 定义了两种类型的渐变&#xff08;gradients&#xff09;&#xff1a; 说明 1、线性渐变&#xff08;Linear Gradients&#xff09;- 向下/向上/向左/向右/对角方向&#xff1…