redis常用的五大数据类型和redis新增类型以及对应的命令

Redis入门(二)--- redis新增数据类型,jedis操作redis,springboot整合redis 文章目录4、Redis新增的数据类型4.1 Bitmaps4.1.1 基本命令4.1.2 实例4.1.3 Bitmaps和set的对比4.2 HyperLogLog4.2.1 基本命令4.2.2 实例4.3 Geospatial4.3.1 基本命令4.3.2 实例5、Jedis操作redis5.1 Jedis-String5.2 Jedis-List5.3 Jedis-Set5.4 Jedis-Hash5.5 Jedis-Zset6、Springboot整合Redis1、pom依赖2、配置config3、测 阅读详情

常用五大数据数据类型

1.1 String 类型

        String类型是一个key对应一个value。

        String类型是二进制安全的,也就是Redis的string可以包含任务数据。比如jpg图片或者序列化的对象。

        String类型是Redis最基本的数据类型,一个Redis中字符串value最多可是512M。

        String的数据类型是简单的动态字符串,是可以修改的字符串,内部结构实现上类似于java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。

        扩容方式:当字符串长度小于1M时,扩容都是加倍现有的空间。如果超过1M,扩容一次只会多扩1M的空间,直到最大长度512M。    

1.2 常用命令

        set<key> <value>        添加键值对

        get <key>        查询对应健值

        append <key> <value>        将给定的<value> 追加到原值的末尾

        strlen <key>        获得值的长度

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

       incr <key> 

                将key中存储的数字值增1

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

        decr <key>

                将key中存储的字数值减1

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

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

        mset <key1><value1><key2><value2>...

                同时设置一个或多个key-value对

        mget <key1><key2>...         同时获取一个或多个value

        msetnx <key1><value1><key2><value2>...          同时设置一个或多个key-value对,当且仅当所有给定的key都不存在

        getrange <key><起始位置><结束位置>        获得值的范围,类似java中的substring

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

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

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

2.1 List (列表)类型

        是一个键对应多个值

        它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

        List的数据结构为快速链表quckList,在列表元素较少的情况下会使用一块连续的内存存储,这个结构是zipList (压缩列表)。当数据量比较多的时候才会改成quickList,因为普通的链表需要的附加指针空间太大,会比较浪费空间。

        Redis将链表和zipList结合起来组成了quicklist。这样既满足了快速的插入删除性能,又不会出现太大的空间冗余。

2.2 常用命令

        lpush | rpush <key><value1><value2><value3>...         从左边|右边插入一个或多个值。

        lpop|rpop <key>        从左边|右边吐出一个值。值在键在,值没键没

        rpoplpush<key1><key2>        从key1列表右边吐出一个值,查到key2列表左边

        lrange <key><start><stop>        按照索引下标获取元素(从左到右)

                lrang key 0 -1    解析 0 代表左边第一个,-1代表右边第一个

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

        llen <key>        获得列表长度

        linsert <key> befors <value> <newvalue>        在value的后面插入newvalue值

        lrem <key><n><value>        从左边删除n个value(从左到右)

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

3.1 Set(集合)类型

        set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以排重的,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。

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

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

        java中hashset的内部实现使用的还是hashmap,只不过所有的value都指向同一个对象。

        redis 的set结构也是一样,它的内部也使用hash结构,所有value都指向同一个内部值。

3.2 常用命令  

        sadd <key><value1><value2> .....

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

        smembers <key>        取出该集合的所有值。

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

        scard<key>         返回该集合的元素个数。

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

        spop <key>        随机从该集合中吐出一个值  

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

        smove <source><destination>value        把集合中一个值从一个集合移动到另一个集合

        sinter <key1><key2>        返回两个集合的交集元素。

        sunion <key1><key2>        返回两个集合的并集元素。

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

4.1 Hash (哈希)类型

       是 一个键值对集合

        hash是一个string类型的field和value的映射表,hash特别适合用于存储对象类型Java里面的Map<String,Object>

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

4.2 常用命令       

        hset <key><field><value>        给<key>集合中的  <field>键赋值<value>

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

        hmset <key1><field1><value1><field2><value2>...         批量设置hash的值

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

        hkeys <key>        列出该hash集合的所有field

        hvals <key>        列出该hash集合的所有value

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

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

5.1  Zset 有序集合(SortedSet)

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

        不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。评分可以重复。

        因为元素是有序的,所以可以根据评分或者次序来获取一个范围的元素。

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

        zset是redis提供的一个非常特别的数据结构,一方面它等价于java的数据结构Map<String,Double> 可以给每一个元素value赋予一个权重score,另一方面它又类似于TreeSet,内部的元素会按照权重score进行排序,可以得到每个元素的名次,还可以通过score的范围来获取元素的列表。

        zset底层使用了两个数据结构,hash和跳跃表。hash的作用就是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score。跳跃表的目的在于给元素value排序,根据score的范围获取元素列表。

5.2 常用命令

        zadd  <key><score1><value1><score2><value2>…

                将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

        zrange <key><start><stop> [withscores]

                返回有序集 key 中,下标在<start><stop>之间的元素,

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

        zrangebyscore key minmax [withscores] [limit offset count]

                返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

        zrevrangebyscore key maxmin [withscores] [limit offset count]               

                同上,改为从大到小排列。

        zincrby <key><increment><value>      为元素的score加上增量

        zrem  <key><value>        删除该集合下,指定值的元素

        zcount <key><min><max>        统计该集合,分数区间内的元素个数

        zrank <key><value>        返回该值在集合中的排名,从0开始。

redis6新增类型

1.1  bitmaps 

        可以实现对位的操作,合理地使用操作位能够有效地提高内存使用率和开发效率

        bitmaps本身不是一种数据 类型,实际上它就是字符串(key-value),但是它可以对字符串位的操作。

        bitmaps单独提供了一套命令,所以在redis中使用bitmaps和使用字符串的方法不太相同,可以把bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,数组的下标在bitmaps中叫做偏移量。

1.2 命令

value只能是0或1

        setbit<key><offset><value>        设置Bitmaps中某个偏移量的值(offset:偏移量从0开始)

                例如:可以把用户id(1,2,3,4...)作为偏移量(id-1), setbit  key1  id-1  value

       getbit<key><offset>        获取Bitmaps中某个偏移量的value:getbit  key1  id-1

                不存在的偏移量,返回0

        bitcount<key>[start end]         统计字符串从start字节到end字节比特值(value)为1的数量

                start和end参数的设置,都可以使用负数值:比如-1表示最后一位,而-2表示倒数第二位,

                start、end是指bit组的字节的下标数

                先计算value是1的数量,再start、end

        bitop  and(or/not/xor) <destkey> [key…]         

                bitop是一个复合操作, 它可以做多个Bitmaps的and(交集) 、 or(并集) 、 not(非) 、 xor(异或) 操作并将结果保存在destkey中。 

2.1 HyperLogLog

        是为解决基数(求集合中不重复元素个数)问题,HyperLogLog只会根据输入元素来计算基数,而不会储存元素本身。计算基数所需的空间总是固定的,并且很小的。

2.2 命令

        pfadd <key>< element> [element ...]          添加指定元素到 HyperLogLog 中,

                返回1,表示基数发生了变化;返回0,表示基数没有发生变化

        pfcount<key> [key ...]        计算多个key的合并基数

        pfmerge<destkey><sourcekey> [sourcekey ...]  

                将一个或多个sourcekey合并后的结果存储在另一个destkey中,比如每月活跃用户可以使用每天的活跃用户来合并计算可得

3.1 Geospatial 类型

        redis 3.2 增加了对GEO类型的支持,GEO地理信息的缩写,该类型就是元素的2维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作。

3.2 命令

        geoadd<key>< longitude><latitude><member> [longitude latitude member...]

                添加一个或多个地理位置(经度,纬度,名称)

                两极无法直接添加,一般会下载城市数据,直接通过java程序一次性导入。

                有效的经度从-180度到180度。有效的纬度从-85.05112878度到85.05112878度。

                当坐标位置超出指定范围时,该命令将会返回一个错误。

                已经添加的数据,是无法再次往里面添加的

        geopos  <key><member> [member...]        获得指定地区的坐标值

        geodist<key><member1><member2>  [m|km|ft|mi ]         获取两个位置之间的直线距离

                ft代表英尺

                mi代表英里

        georadius<key>< longitude><latitude>radius  m|km|ft|mi        以给定的经纬度为中心,找出某一半径内的元素

Redis常用命令和五大数据类型 Redis的五大数据类型 Redis 字符串(String) 命令 Redis 哈希(Hash) 命令 Redis 列表(List) 命令 Redis 集合(Set) 命令 Redis 有序集合(sorted set) 命令 Redis HyperLogLog 命令 Redis 发布订阅 命令 Redis 事务 命令 Redis 键(key) 命令 阅读详情

相关推荐

京东礼品卡绑定技术解析与安全验证实践

电商系统开发中,卡券绑定是常见的业务场景,其核心在于安全验证机制的设计与实现。从技术原理来看,现代验证系统通常采用多层防护,包括前端数据加密、行为验证(如滑块验证)和风控校验等关键技术。这些机制通过设备指纹采集、请求签名验证等方式,有效防范自动化攻击。在实际工程实践中,开发者需要特别关注接口鉴权流程,正确处理安全令牌(如st/vt令牌)和请求签名。京东礼品卡绑定作为典型案例,展示了如何平衡用户体验与系统安全,其验证系统会持续升级,需要开发者跟踪接口变化。对于企业级应用,建议采用混合模式技术方案,结合浏览器自

weixin_28607671的博客 235

Redis常用及新增数据类型

Redis常用及新增数据类型

qq_61465103的博客 1518

逆向实战:从x-mini签名到RPC调用,Frida动态分析小红书加密协议

本文通过实战案例,详细拆解了小红书App的加密协议逆向分析过程。从识别x-mini签名等关键参数入手,结合静态分析与Frida动态Hook技术,追踪到核心的RPC调用入口,并最终封装成可独立调用的RPC函数,为安全研究和协议理解提供了完整的技术路径。

moss5的博客 1036

redis数据类型插入输出命令

redis数据类型插入输出命令

单俞浩的博客 3303

深入解析ADC采样电容:从充电误差到LSB精度的关键设计

本文深入解析了ADC采样电容在模数转换中的核心作用,重点探讨了充电时间常数与采样误差的博弈关系。通过推导最小采样时间公式,揭示了精度、速度、源阻抗与内部电容之间的制约关系,并提供了从理论计算到外部驱动电路设计的实战指南,是确保ADC达到LSB精度的关键。

android的专栏 1105

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 616

Redis各数据类型操作命令

使用 bitop not 命令,这里是将原有的为0的offset置为1,将1置为0,并将新的值放到新的bitmap中,这里需要特殊说明一下,bitmap的长度默认是8的倍数,因此当取反时后获取数量的话,获得的是大于原bitmap最大偏移量的最小的8的倍数减去原bitmap的数量。例如:为一个bitmap的23位设置位1,那么此时的bitmap长度默认为24(大于23的最小8的倍数),那么取反时,除了23位取反变成0之外,其余的23位全部由0变为1,那么新的bitmap取长度就是23。

fivehundredyearsago的博客 616

WRF后处理总结:wrf-python与NCL在WRF后处理中的基本应用——变量提取、计算与可视化

判断需要提取的变量与诊断量确定后,使用getvar函数进行提取。可使用ncdump-h命令查看wrfout中的变量,wrf中的诊断量分类也可从官方文档处查阅。判断绘图类型所需的可视化绘图类型,决定了你在WRF后处理中的计算步骤。1D点线图:ll_to_xy interpline2D填色图:interplevel3D剖面图:vinterp vertcross绘图、美化色标、XY轴、标签的设置等等。

weixin_43750300的博客 1万+

Redis常用命令

string常用命令、hash常用命令、list常用命令、set常用命令、zset的常用命令、key常用命令

weixin_39033358的博客 1127

SAM3 几行代码支持任意图像分辨率,减少显存占用(针对transformers库)

几行代码让sam3支持任意图像分辨率

qq_41234663的博客 156

Android 车载应用之快速入门

车载 Android 系统也被称为 Android Automotive OS,是对原始 Android 系统的一个功能扩充版本。与手机系统一样,Android Automotive OS 源代码完全开放,第三方供应商和汽车制造商可以官方源码的基础上自行开发和拓展,无论是编程语言还是各项接口,都与 Android 系统保持了一致。

xiangzhihong8的专栏 1114

Redis 常用五大数据类型

本文介绍了Redis的基本命令和两种核心数据类型操作。第一部分概述了Redis key的基础操作,包括查看、判断、删除、过期设置等命令。第二部分详细讲解了String类型,包括其二进制安全特性、常用命令如set/get/incr等,以及SDS动态字符串的内部实现原理。第三部分介绍了List类型,说明其双向链表特性,列举了lpush/rpop/rpoplpush等操作命令,并解释了快速链表(quickList)的数据结构。全文通过代码示例和图示,清晰展示了Redis基础数据类型的使用方法和实现机制。

L_qingting的博客 1561

IoU的进化之路——IoU、GIoU、DIoU、CIoU四种损失函数总结

IoU、GIoU、DIoU、CIoU四种损失函数总结

chase 8131

Redis常用五大数据类型常用命令(详细)

;j'k'ljkl

但行好事,莫问前程 1733

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【 Redis五大数据类型实现原理】

键不同,值相同。

2401_86968712的博客 2544

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【我与Redis的相爱相杀】详细讲解Redis五大常用数据类型在Linux系统下命令行代码的使用

认真整理了Redis下五大常用数据类型在Linux系统下的具体使用,干货满满,希望大家喜欢????

知识记录 2341

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【速成Redis】02 Redis 五大基本数据类型常用命令

该篇适用于速成redis。本篇我们将讲解:redis五大基本数据类型的常用语句。

weixin_71246590的博客 1471

Redis五大数据类型以及详细命令介绍

Redis五大数据类型详细介绍 文章目录一、String数据类型(一)、概述(二)、命令详解1、SET/GET/APPEND/STRLEN2、INCR/DECR/INCRBY/DECRBY3、GETSET4、SETEX5、SETNX6、MSET/MGET/MSETNX二、List数据类型(一)、概述(二)、命令详解1、LPUSH/LPUSHX/LRANGE2、LPOP/LLEN3、LREM/LSET/LINDEX/LTRIM:4、LINSERT5、RPUSH/RPUSHX/RPOP/RPOPLPUSH三、H

Chenwei的博文 1566

Redis基础学习(五大值数据类型的常用操作命令汇总)

本篇博客核心内容:关于Redis基本知识与Redis键(key)常用操作命令、Redis五大值数据类型。redis string、redis list、redis hash、redis set、redis zset常用操作命令的小结...

岁岁岁平安的博客 1676

Redis常用五大数据类型

Redis常用五大数据类型

small_engineer的博客 1万+

Redis五大数据类型

五大数据类型介绍 redis 中的数据都是以 key/value 的形式存储的,五大数据类型主要是指 value 的数据类型,包含如下五种: STRING STRING 是 redis 中最基本的数据类型,redis 中的 STRING 类型是二进制安全的,即它可以包含任何数据,比如一个序列化的对象甚至一个 jpg 图片,要注意的是 redis 中的字符串大小上限是 512M 。 LIST LIST 是一个简单的字符串列表,按照插入顺序进行排序,我们可以从 LIST 的头部 (LEFT) 或者尾部 (RIG

m0_54797663的博客 3201

Redis五大数据类型常用命令

不 同之处是有序集合的每个成员都关联了一个评分(score) ,这个评分(score)被用来按照从 最低分到最高分的方式排序集合中的成员。​ (2)因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来 获取一个范围的元素。​ (1)set中的元素是无序不重复的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,​ (2)Redis的Set是string类型的无序集合。

qq_45875024的博客 928

Redis6的介绍及常用五大数据类型

redis的五大数据类型的基本语法及使用

qq_44733777的博客 852

Redis6篇(一)概述与安装 + 五大常用的数据类型

一、Redis的概述与安装 1.1 NoSQL数据库简介 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。 不遵循SQL标准。 不支持ACID。 远超于SQL的性能。 NoSQL适用场景 对数据高并发的读写 海量数据的读写 对数据高可扩展性的 NoSQL不适用场景 需要事务支持 基于sql的结构化查询存储,处理复杂的关系,需要即席查询

cV展示的学习园 2万+

Redis6之(二)常用的五大数据类型

Redis 6常用的五大数据类型

qq_50994235的博客 1755
上一篇: post请求用integer类型接收参数为null的解决方法
下一篇: Oracle的rownum查单表限制条数
zsj_javaer
博客等级 码龄5年 1粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值