Redis五大基本数据类型

news2024/11/17 15:47:41

Redis五大基本数据类型

1.Redis通用命令

常用命令

#Redis的键key操作
keys * 表示查看当前库所有key 【注意是:可以使用通配符】
exists <key> 表示判断某个key是否存在,存在返回1,否则返回0
type <key> 表示判断key类型
del <key> 表示删除指定key数据,表示就是直接删除除掉,如果删除成功返回1,否则返回0
unlink <key> 根据value选择非阻塞删除,仅将key从keyspace元数据中 删除,真正删除会在后续异步操作,表示不是立即删除
expire <key> 秒数 :表示给指定key设置过期时间
ttl <key> 查看还多少秒过期,-1表示永过期,-2表示已经过期

2.String类型

简介:String是Redis最基本的类型,是一个key对应一个value类型,String类型是二进制安全的,说明Redis中的String类型可以包含任何数据,比如jpg图片或者序列化的对象,一个Redis中字符串value是最多可以是512M

常用命令

#添加数据指令
set <key><value> 添加键值对【一次只能添加一个值】
    NX表示数据库中key不存在时,可以将k-v添加到数据库中
    XX表示数据库中key存在时,可以将k-v添加数据库中,与NX参数互斥
    EX表示key超时秒数
    PX表示key超时毫秒数,与EX互斥

append <key><value> 表示将给定的value追加到原值的未尾

setnx <key><value> 表示只有在key不存在时,设置key的值

mset <key1><value1><key2><value2>... 表示同时设置一个或多个k-v键值对

msetnx <key1><value1><key2><value2>... 表示同时设置一个或多个k-v键值,注意是当设置的key中必须都不能存在,如果存在一个则全部失败

setex <key> <过期时间> <value> 表示设置键值的同时,设置过期时间,单位为秒

#获取值
get <key> 表示查询对应键值

mget <key1><key2>... 表示查询多个值

strlen <key> 表示获取得值的长度

getrange <key> <起始位置><结束位置> 获取值的范围,类似于JAVA中的substring包含前后

#替换值
setrange <key><起始位置><value> 用value覆盖<key>所储存的字符串值,从<起始位置>开始(索引从0开始)

getset <key><value> 以新换旧值,设置新值同时获取旧值

#对数字值操作,就是只能对纯数字操作
incr <key> 将key中储存的数字值增1,只能对数字值操作,如果为空,新增值为1
decr <key> 将key中存储的数字值减1,只能对数字值操作,如果为空,新增值-1
incrby|decrby <key> <步长> 将key中存储的数字值增减,自定义步长

3.List类型

单键多值:Redis列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表头部(左边)或者尾部(右边)
它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作增的节点性能会较差。

常用命令

#添加元素
#从左边/右边插入一个或多个值
lpush/rpush <key><value1><value2><value3>...
#列表key1(右边)吐出一个值,插到key2列表左边
rpoplpush <key1><key2>
#在<value>的后面插入<newValue>插入值
linsert <key> after|before <value> <newValue>

#查询元素
#1.按照索引下标获取元素(从左到右)
lrange <key> <start><stop> 
例如:lrange <key> 0 -1  解:0表示左边第一个,-1表示右边第一个,(0-1)表示获取所有
lindex <key><index> 按照索引下标获取元素(从左到右)
llen <key> 获取得列表长度

#设置元素值
#替换值
lset <key> <index> <value> 将列表key下标index的值替换成value

#删除元素值
lpop/rpop <key> 从左边/右边吐出一个值
lrem <key> <n><value> 从左边删除n个value值(从左到右) 【表示是从列表中删除相同的n个value值】

注意是:list集合数据类型有特点就是值在键在,值元键

List集合数据类型
List的数据结构为快速链表quickList,首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也是压缩列表
在这里插入图片描述

4.Set类型

Redis中set对外提供了功能与list类似是一个列表的功能,特殊之处在于set是可以自动去重操作,当需要存储一个列表数据,又不希望出现重复数据时,set是一个选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。

Redis的Set是String类型的无序集合,不重复的,它底层其实是一个value为null的hash表,所以在添加删除查询时复杂度都是o(1)
一个算法,随着数据的增加,执行时间的长短,如果是o(1),数据增加,查找数据的时间不变。

常用命令

#添加命令
#将一个或多个member元素加入到集合key中,已经存在的member元素将被忽略掉
sadd <key><value1><value2>...
#把集合中一个值从一个集合移动到另一个集合
smove <source><destination> <value>

#查询命令
#取出该集合中所有值 
smembers <key>
#判断集合<key>是否为含有该<value>值,有返回1,没有返回0
sismembers <key><value>
#返回该集合的元素个数 
scard <key>
#随机从该集合中吐出一个值
spop <key>
#随机从该集合中取出n个值,不会从集合中删除
srandmember <key><n>

#删除命令
#删除集合中的某个元素
srem <key><value1><value2>...

#集合操作
#返回两个集合的交集元素
sinter <key1><key2>
#返回两个集合的并集元素
sunion <key1><key2>
#返回两个集合的差集元素(key1中的,不包含key2中的)
sdiff <key1><key2>

Set集合数据结构

Set数据结构是dict字典,字典是用哈希表实现的
JAVA中HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象
Redis的Set结构也是一样,它的内部也使用hast结构,所有value都指向同一个内部值

5.Hash类型
简介:Redis中的hash是一个键值对集合,Redis中的hash是一个String类型的field和value的映射表,hash特别适合用于存储对象,类似JAVA中的Map<String,Object>
例如:用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用户普通的key-value结构来存储

Hash存储结构
在这里插入图片描述

上述就是Hash的底层结构

常用命令

#添加数据
#给key集合中添加field键值value
hset <key> <field><value>
#将哈希key中的域field的值设置为value,当且仅当域field不存在【当field存在时,是添加不成功的】
hsetnx <key><field><value>
#批量设置hash的值
hmset <key> <field1><value1><field2><value2>...

#查询数据
#从集合中取field取出value
hget <key><field>
#查看哈希表key中,给定域field是否存在
hexists <key><field>
#列出该hash集合中所有field
hkeys <key>
#列出该hash集合的所有value
hvals <key>

#对数值类型操作
#为哈希hash表key中域的field对应的value值增量increment
hincrby <key><field><increment>

数据结构
hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable

6.Redis有序集合ZSet(Sorted Set)

简介:Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分score。这个评分score被用来按照从最低到最高分的方式排序集合中的成员。集合成员是唯一的,但是评价可以是重复了

因为元素是有序的,所以可以很快根据评分scope或者次序position来获取一个范围元素
访问有序集合的中间元素也是非常快的,因此zset是有序不重复的集合

常用指令

#添加元素
#将一个或多个member元素及其score值加入到有序集合key当中
zadd <key><score1><value1><score2><value2>...

#查询数据
#返回有序集合key中,下标在<start><stop>之间元素,带上WITHSCORES可以让分数一起和值返回到结果集
zrange <key><start><stop> [WITHSCORES] 带上withscores可以显示分数
#返回返回有序key中,所有score值介于min和max之间(包括等于min或max成员),有序集成员按score值递增(从小到大)次序排列
zrangebyscore <key> minmax [withscores] [limit offset count]
#同上,修改为从大到小排列
zrangebyscore <key> maxmin [withscores] [limit offset count]
#统计该集合分数区间内的元素个数 
zcount <key><min><max>
#返回该值在集合中的排名,从0开始
zrank <key><value>

#对数值类型操作


#删除元素
zrem <key><value>

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

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

相关文章

fiddler的下载和安装,及常用操作

目录 一、fiddler介绍 二、fiddler的下载和安装 三、fiddler的简单配置 四、fiddler的抓包 五、fiddler的自动响应器 六、fiddler的断点 七、fiddler的构造器 一、fiddler介绍 Fiddler是比较好用的Web代理调试工具之一&#xff0c;它能记录并检查所有客户端与服务端的HT…

【SpringCloud09】Ribbon负载均衡服务调用

1.概述 1.1是什么 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说&#xff0c;Ribbon是Netflix发布的开源项目&#xff0c;主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时&…

Java 如何设计一款小游戏详细讲解(一)

目录 介绍 讲解 步骤一 步骤二 阶段(一)详细代码 介绍 注&#xff1a;这里是参考黑马程序员课程&#xff0c;其中图片也是直接拿的黑马程序员提供的图片 其中游戏的代码主要参考黑马程序员的课程&#xff0c;登录和注册主要由自己完成。 黑马素材放到这里自取 链接: https…

【Esp32】Spi接口驱动SX1268模块

【Esp32】Spi接口驱动SX1268模块1.硬件接线2. SX1268 模块的 SPI 时序分析3. 基于 ESP32 实现函数封装3.1 读寄存器3.2 写寄存器4. 实验结果日期&#xff1a; 2023-01-13 项目需要用乐鑫的 ESP32开发板驱动 Lora 模块&#xff0c;用的是 深圳SX1268ZTR4-GC的lora模块&#xff…

通行密钥,向无休止的修改密码说再见~

在上一期里《对称加密面临的那些挑战》中&#xff0c;我们提过密码&#xff0c;和多数人理解的不同&#xff0c;日常生活中用于保护账号安全的所谓“密码”&#xff0c;更贴切的称呼应该是“口令”密码。密码学中的密码&#xff0c;和我们日常生活中登录各类信息化系统所使用的…

Vue--》基于Vue的UI组件库,大家应该熟悉并会使用

目录 PC端UI组件库 Element UI IView UI 移动端UI组件库 Vant Cube UI Mint UI Nut UI UI组件库&#xff1a;它是设计系统的一部分&#xff0c;是在我们常规界面设计过程中可以直接用来制作交互图例和搭建页面的组件集合&#xff0c;它可以作为单个组件独立存在&#x…

Linux下的FrameBuffer驱动框架

一、RGB LCD经典显示器件介绍&#xff1a;1、LCD屏幕的重要属性参数&#xff1a;① 分辨率&#xff1a;也就是屏幕上的像素点的个数&#xff1b;② 像素格式&#xff1a;即单个像素点RGB三种颜色的表达方式&#xff0c;包括RGB888、ARGB8888和RGB565等。③ LCD屏幕硬件接口&…

全网最全的Linux中的内核级加强型火墙图文详解

目录 前言 一、Selinux的功能 二、Selinux的状态及管理 三、Selinux的安全上下文 四、SEBOOL 五、SEPORT 六、setrouble 前言 内核级加强型火墙主要是指系统中的selinux功能&#xff0c;该功能开启时&#xff0c;会对系统中的文件和程序产生影响&#xff0c;用户的…

SkyEye:针对飞行模拟器的仿真解决方案

01.飞行模拟器简介 飞行模拟器是一种由人工打造&#xff0c;能够尽可能真实地还原飞机飞行及空中环境的模拟系统&#xff0c;一般用于飞行员培训、飞机设计等工作。飞行模拟器能够模拟如何控制飞机飞行、模拟飞机应用系统的反应&#xff0c;还可模拟一些可能会对飞机系统造成影…

java图片压缩

1背景 查看各种文章&#xff0c;发现thumbnailator的压缩率和压缩效果都不错&#xff0c;thumbnailator又是使用java实现的&#xff0c;所以直接扒源码&#xff0c;找到了里面实现压缩的关键代码&#xff0c;封装成一个压缩工具类&#xff0c;有需要的同学可以参考。thumbnail…

Linux多线程Web服务器(C++实现)

本文实现的是基于Reactor模式epoll&#xff08;边缘触发&#xff09;非阻塞socket非阻塞IO线程池的Web服务器&#xff0c;可以处理GET、POST两种请求&#xff0c;完成展示主页、获取图片、获取视频、登录及注册共五种功能。原理图&#xff1a;上图为本文实现的服务器的原理图&a…

国产GPU芯片迎来突破,算力全球第一,中文编程也有好消息

苦&#xff0c;芯片久矣&#xff0c;终&#xff0c;迎来突破&#xff0c;实在振奋人心&#xff01;最近&#xff0c;国产GPU芯片传来了好消息&#xff0c;国产自研首款通用芯片&#xff0c;以每秒千万亿次的计算能力&#xff0c;创全球算力记录&#xff0c;芯片领域实现跨越式的…

包体积优化 · 实战论 · 怎么做包体优化? 做好能晋升吗? 能涨多少钱?

“ 【小木箱成长营】包体积优化系列文章&#xff1a; 包体积优化 方法论 揭开包体积优化神秘面纱 包体积优化 工具论 初识包体积优化 BaguTree 包体积优化录播视频课 ”一、引言 Hello&#xff0c;我是小木箱&#xff0c;欢迎来到小木箱成长营系列教程&#xff0c;今天将分…

论文投稿指南——中文核心期刊推荐(农业工程)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

实战10:基于opencv的数字图像处理:边缘检测 (完整代码+详细教程)

给出“离散拉普拉斯算子”一般形式的数学推导 离散值的导数使用差分代替: 所以: 以(x, y)为中心点,在水平和垂直方向上应用拉普拉斯算子,滤波器(对应a=1的情况)为:

Spring Cloud Alibaba学习指南

文章目录背景介绍主要功能主要组件参考文档Spring Cloud Alibaba githubNacos官方文档Nacos运维手册Sentinel官方文档Spring Cloud Alibaba SentinelSeata官方文档Spring Cloud Alibaba 英语文档应用脚手架背景 由于在2018年Netflix公司宣布对其核心组件Hystrix、Ribbon、zuul…

远端连接服务器详解

昨天决定入手了一台腾讯轻量应用服务器&#xff0c;在连接的过程中遇到很多问题&#xff0c;浪费了很多时间&#xff0c;所以在这里对这些问题进行整理分享给大家&#xff01;&#xff01;&#xff01;系统的安装OpenCloudOS是完全中立、全面开放、安全稳定、高性能的操作系统及…

JVM调优之GC日志分析及可视化工具介绍

JVM调优之GC日志分析及可视化工具介绍 文章目录JVM调优之GC日志分析及可视化工具介绍GC日志参数GC日志参数常用垃圾收集器参数GC日志分析日志的含义使用 ParNew Serial Old 的组合进行内存回收使用 Parallel Scavenge Parallel Old 的组合进行内存回收大对象回收分析日志分析…

药品溶出曲线数据库

药物在体外的溶出行为&#xff0c;可以用来预测体内的崩解、溶出和吸收情况&#xff0c;同时药物体外溶出行为能够在一定程度上反映出制剂的质量。而溶出曲线特别是不同溶出介质的多条溶出曲线&#xff0c;可更加全面、灵敏地反映出上述关键要素的变化。当药物溶出曲线中药物品…

电脑磁盘重新分配空间的简单步骤(无损数据空间转移)

目录 一、前言 遇到问题 解决方式 二、磁盘现状与实现目标 磁盘现状 实现目标 三、操作步骤 &#xff08;一&#xff09;关闭电脑磁盘加密 &#xff08;二&#xff09;下载安装分区助手 &#xff08;三&#xff09;分配空间教程 注意事项 磁盘空间移动成功 一、前…