首页 > 数据库 >2. Redis数据类型

2. Redis数据类型

时间:2024-07-25 18:29:36浏览次数:15  
标签:返回 key 数据类型 Redis value 哈希 表中 字符串

Redis主要支持一下几种数据类型:

  • string(字符串):基本的数据存储单元,可以存储字符串、整数或者浮点数
  • hash(哈希):一个键值对集合,可以存储多个字段。
  • list(列表):可以存储一系列的字符串元素。
  • set(集合):一个无序集合,可以存储不重复的字符串元素。
  • zset(有序集合):每个元素都有一个分数与之关联,类似集合。
  • 位图(Bitmaps):基于字符串类型,可以对每个位进行操作。
  • 超日志(HyperLogLogs):用于基数统计,可以估算集合中的唯一元素数量。
  • 地理空间(Geospatial):用于存储地理位置信息。
  • 发布/订阅(Pub/Sub):一种消息通信模式,允许客户端订阅消息通道,并接收发布到该通道的消息。
  • 流(Streams):用于消息队列和日志存储,支持消息的持久化和时间排序。
  • 模块(Modules):Redis支持动态加载模块,可以扩展Redis的功能。

 1. string(字符串)

string是redis最基本的类型,一个key对应一个value。最大能存储512MB。

string类型是二进制安全的。即string可以包含任何数据(jpg图片、序列化对象等)

命令描述
SET key value用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
GET key返回 key 的值,如果 key 不存在时,返回 nil。 如果 key 不是字符串类型,那么返回一个错误。
GETRANGE key start end用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
GETSET key value用于设置指定 key 的值,并返回 key 的旧值。

返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。

当 key 存在但不是字符串类型时,返回一个错误。

GETBIT key offset用于对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
GETBIT key offset当偏移量 OFFSET 比字符串值的长度大,或者 key 不存在时,返回 0 。
MGET key1 [key2..]返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。
SETBIT key offset value对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
SETEX key seconds value为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。设置成功时返回 OK 。
SETNX key value在指定的 key 不存在时,为 key 设置指定的值。设置成功,返回 1 。 设置失败,返回 0 。
SETRANGE key offset value用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。返回被修改后的字符串长度。
STRLEN key获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。当 key 不存在时,返回 0。
MSET key value [key value ...]用于同时设置一个或多个 key-value 对。总是返回 OK 。
MSETNX key value [key value ...]用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对。当所有 key 都成功设置,返回 1 。 如果所有给定 key 都设置失败(至少有一个 key 已经存在),那么返回 0 。
PSETEX key milliseconds value以毫秒为单位设置 key 的生存时间。设置成功时返回 OK 。
INCR key将 key 中储存的数字值增一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。返回执行 INCR 命令之后 key 的值。

INCRBY key increment

将 key 中储存的数字加上指定的增量值。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBY 命令。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。返回加上指定的增量值之后, key 的值。

INCRBYFLOAT key increment

为 key 中所储存的值加上指定的浮点数增量值。

如果 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。返回执行命令之后 key 的值。

DECR key

将 key 中储存的数字值减一。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。返回执行命令之后 key 的值。

DECRBY key decrement

将 key 所储存的值减去指定的减量值。

如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECRBY 操作。

如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。

本操作的值限制在 64 位(bit)有符号数字表示之内。

返回减去指定减量值之后, key 的值。
APPEND key value

用于为指定的 key 追加值。

如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。

如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。

返回追加指定值之后, key 中字符串的长度。

2. hash(哈希)

redis hash是一个键值对集合,类似于一个小型的NoSQL数据库。

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

每个哈希最多可以存储2^32-1个键值对。

命令描述
HDEL key field1 [field2]

用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。

返回被成功删除字段的数量,不包括被忽略的字段。

HEXISTS key field

用于查看哈希表的指定字段是否存在。

如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。

HGET key field

用于返回哈希表中指定字段的值。

返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil 。

HGETALL key

用于返回哈希表中,所有的字段和值。

在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。

以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。

HINCRBY key field increment

用于为哈希表中的字段值加上指定增量值。

增量也可以为负数,相当于对指定字段进行减法操作。

如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。

本操作的值被限制在 64 位(bit)有符号数字表示之内。

返回执行 HINCRBY 命令之后,哈希表中字段的值。

HINCRBYFLOAT key field increment

用于为哈希表中的字段值加上指定浮点数增量值。

如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

返回执行 Hincrbyfloat 命令之后,哈希表中字段的值。

HKEYS key

用于获取哈希表中的所有域(field)。

返回包含哈希表中所有域(field)列表。 当 key 不存在时,返回一个空列表。

HLEN key用于获取哈希表中字段的数量。返回哈希表中字段的数量。 当 key 不存在时,返回 0 。
HMGET key field1 [field2]

于返回哈希表中,一个或多个给定字段的值。

如果指定的字段不存在于哈希表,那么返回一个 nil 值。

返回一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。

HMSET key field1 value1 [field2 value2 ]

用于同时将多个 field-value (字段-值)对设置到哈希表中。

此命令会覆盖哈希表中已存在的字段。

如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。

如果命令执行成功,返回 OK 。

HSET key field value

用于为哈希表中的字段赋值 。

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。

如果字段已经存在于哈希表中,旧值将被覆盖。

如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

HSETNX key field value

用于为哈希表中不存在的的字段赋值 。

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。

如果字段已经存在于哈希表中,操作无效。

如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。

HVALS key

返回哈希表所有的值。

返回一个包含哈希表中所有值的列表。 当 key 不存在时,返回一个空表。

HSCAN key cursor [MATCH pattern] [COUNT count]用于迭代哈希表中的键值对。返回的每个元素都是一个元组,每一个元组元素由一个字段(field) 和值(value)组成。

3. list(列表)

list是字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或尾部(右边)

一个列表最多可以包含2^32-1个元素。

4. 集合(set)

set是string类型的无需集合。集合成员是唯一的,意味着不能出现重复的数据。集合对象的二编码可以是intset或者hashtable。

redis中集合是通过哈希表实现的,所以增删查的复杂度都是O(1)

集合中最大的成员数为2^32-1。

5. 有序集合(zset)

有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数却可以重复。

集合是通过哈希表实现的,所以增删查的复杂度都是O(1),集合中最大的成员数为2^32-1。

标签:返回,key,数据类型,Redis,value,哈希,表中,字符串
From: https://blog.csdn.net/peaceLT/article/details/140668651

相关文章

  • Java八股复习指南-Redis
    Redis基础:Redis为什么快基于内存,内存访问速度比磁盘快基于Reactor模式设计开发单线程事件模型和io多路复用内置了多种优化的数据类型通信协议实现简单且解析高效Redis基本数据类型String需要存储常规数据的场景:缓存Session、Token、图片地址、序列化后的对象(相比较......
  • Redis篇
    目录Redis持久化方式方式一:RDB1、实现命令2、RDB执行原理方式二:AOF1、开启AOF模式2、AOF记录的频率(又称刷盘策略)3、命令重写两种持久化方式对比Redis数据过期策略1、惰性删除2、定时删除Redis数据淘汰策略分布式锁如何保证Redis的高并发高可用一、高并发主从数据同步二、高可用脑......
  • redis工具类封装,redis的使用方式新增修改删除等,
    publicclassRedisUtil{@ResourceprivateRedisTemplate<String,Object>redisTemplate;privateHashOperations<String,String,Object>hashOperations;publicRedisUtil(RedisTemplate<String,Object>redisTemplate){......
  • 第2节课:基本数据类型与变量
    目录C++的基本数据类型整型(IntegralTypes)浮点型(Floating-PointTypes)字符型(CharacterType)布尔型(BooleanType)变量声明和初始化声明变量初始化变量变量的作用域变量的生命周期常量变量的存储类别总结C++的基本数据类型C++是一种静态类型语言,这意味着每个变量在使......
  • redis哨兵实现
    redis单哨兵模式实现:前提:完成redis主从架构https://www.cnblogs.com/lifeiLinux/p/18317986环境: 服务器:54主53和52从 redis版本:3.2.1354机器操作: 配置哨兵配置文件: install-d/fan/etc/redis/ install-d/fan/{logs,data}/sentinel/ cat>/fan/etc/redis/s......
  • Redisson常用的数据结构及应用场景
    Redisson提供了一系列高级数据结构,这些数据结构封装了Redis的原生数据类型,提供了JavaAPI的便利性和分布式特性。以下是Redisson中一些常用的数据结构,场景还在不断完善中:RBucket:这是一个简单的键值对存储,相当于Redis中的String类型。你可以使用它来存储和检索......
  • vue的组件注册/组件传递数据_props/组件传递多种数据类型/组件传递Props校验
    1.组件注册全局注册:注册完后所有vue都能使用局部注册:仅当前页面能够使用全局注册虽然方便但有以下几个问题一.在打包时会将它一同打包,有时候没有用到它也打包,无任何意义二.课维护性低,在大型项目中使项目的依赖关系不明确2.组件传递数据_props父级传递子级数据(注意传递数......
  • 六、【Python】基础教程-【Python全掌握】六大基础数据类型:浮点、布尔、列表、元组、
    ......
  • 第二部分:关键技术领域的开源数据库实践【开源NoSQL数据库保姆级教程之Redis数据库】
    Redis数据库Redis简介Redis(RemoteDictionaryServer:远程字典服务)是完全开源并免费的,遵守BSD协议,是一个高性能的key-value数据库中Redis与其他key-value缓存产品有以下三个特点Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Red......
  • C语言——数据类型
    C语言——数据类型C语言中的数据类型种类整型整型的常量形式整型的变量形式整型类型的分类整型数据在内存中的存储浮点型浮点型的大小浮点型数据的存储浮点数的比较问题字符型C语言中的数据类型种类数据类型可分为基本数据类型(整型,浮点型,字符型,枚举类型),构造数据类......