Redis 数据类型

article/2025/8/29 8:53:36

1、string类型

(1)存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型。

string,他就是存一个字符串儿,注意是value那一部分是一个字符串,它是redis中最基本、最简单的存储数据的格式。

(2)存储数据的格式:一个存储空间保存一个数据

每一个空间中只能保存一个字符串信息,这个信息里边如果是存的纯数字,他也能当数字使用,我们来看一下,这是我们的数据的存储空间。

(3)存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用.

 一个key对一个value,而这个itheima就是我们所说的string类型,当然它也可以是一个纯数字的格式。

2、string 类型数据的基本操作

(1)基础指令

  • 添加/修改数据添加/修改数据

    set key value

  • 获取数据

    get key

  • 删除数据

    del key

  • 判定性添加数据

    setnx key value

  • 添加/修改多个数据

    mset key1 value1 key2 value2 …

  • 获取多个数据

    mget key1 key2 …

  • 获取数据字符个数(字符串长度)

    strlen key

  • 追加信息到原始信息后部(如果原始信息存在就追加,否则新建)

    append key value

(2)单数据操作与多数据操作的选择之惑

即set 与mset的关系。这对于这两个操作来说,没有什么你应该选哪个,而是他们自己的特征是什么,你要根据这个特征去比对你的业务,看看究竟适用于哪个。  

3、string 类型数据的扩展操作

string的扩展操作,分成两大块:一块是对数字进行操作的,第二块是对我们的key的时间进行操作的。

设置数值数据增加指定范围的值

incr key                                value值加一
incrby key increment            value值增加increment这么大的数
incrbyfloat key increment     value值增加increment这么大的浮点数

设置数值数据减少指定范围的值  

decr key
decrby key increment

设置数据具有指定的生命周期  

setex key seconds value                value值在给定秒数到期后销毁
psetex key milliseconds value         value值在给定毫秒数到期后销毁

4、string 类型数据操作的注意事项

(1)数据操作不成功的反馈与数据正常操作之间的差异

表示运行结果是否成功

(integer) 0 → false 失败

(integer) 1 → true 成功

表示运行结果值

(integer) 3 → 3 3个

(integer) 1 → 1 1个

(2)数据未获取到时,对应的数据为(nil),等同于null

(3)数据最大存储量:512MB

(4)string在redis内部存储默认就是一个字符串,当遇到增减类操作incr,decr时会转成数值型进行计算

(5)按数值进行操作的数据,如果原始数据不能转成数值,或超越了redis 数值上限范围,将报错 9223372036854775807(java中Long型数据最大值,Long.MAX_VALUE)

(6)redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发带来的数据影响.

5、string应用场景与key命名约定

(1)在redis中为大V用户设定用户信息,以用户主键和属性值作为key,后台设定定时刷新策略即可。

eg:    user:id:3506728370:fans        →    12210947
eg:    user:id:3506728370:blogs    →    6164
eg:    user:id:3506728370:focuses    →    83

(2)也可以使用json格式保存数据

eg:    user:id:3506728370    →    {“fans”:12210947,“blogs”:6164,“ focuses ”:83 } 

(3) key 的设置约定

  • 数据库中的热点数据key命名惯例
    表名主键名主键值字段名
    eg1:orderid29437595name
    eg2:equipid390472345type
    eg3:newsid202004150title

6、hash类型

新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息

需要的存储结构:一个存储空间保存多个键值对数据

hash类型:底层使用哈希表结构实现数据存储

 

如上图所示,这种结构叫做hash,左边一个key,对右边一个存储空间。这里要明确一点,右边这块儿存储空间叫hash,也就是说hash是指的一个数据类型,他指的不是一个数据,是这里边的一堆数据,那么它底层呢,是用hash表的结构来实现的。

值得注意的是:

如果field数量较少,存储结构优化为类数组结构

如果field数量较多,存储结构使用HashMap结构

7、hash 类型数据的基本操作

  • 添加/修改数据

    hset key field value

  • 获取数据

    hget key field
    hgetall key

  • 删除数据

    hdel key field1 [field2]

  • 设置field的值,如果该field存在则不做任何操作

    hsetnx key field value

  • 添加/修改多个数据

    hmset key field1 value1 field2 value2 …

  • 获取多个数据

    hmget key field1 field2 …

  • 获取哈希表中字段的数量

    hlen key

  • 获取哈希表中是否存在指定的字段

    hexists key field

8、hash的拓展操作

(1)hash 类型数据扩展操作

获取哈希表中所有的字段名或字段值

hkeys key
hvals key

设置指定字段的数值数据增加指定范围的值  

hincrby key field increment
hincrbyfloat key field increment

(2)hash类型数据操作的注意事项

  1. hash类型中value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到,对应的值为(nil)。
  2. 每个 hash 可以存储 232 - 1 个键值对 hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存储大量对象而设计 的,切记不可滥用,更不可以将hash作为对象列表使用。
  3. hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据效率就很会低,有可能成为数据访问瓶颈。

9、list类型

数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分

需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序

list类型:保存多个数据,底层使用双向链表存储结构实现

先来通过一张图,回忆一下顺序表、链表、双向链表。

 

 来看一下,因为它是双向的,所以他左边右边都能操作,它对应的操作结构两边都能进数据。这就是链表的一个存储结构。往外拿数据的时候怎么拿呢?通常是从一端拿,当然另一端也能拿。如果两端都能拿的话,这就是个双端队列,两边儿都能操作。如果只能从一端进一端出,这个模型,叫做栈。

10、list 类型数据基本操作

  • 添加/修改数据

    lpush key value1 [value2] ……
    rpush key value1 [value2] ……

  • 获取数据

    lrange key start stop
    lindex key index
    llen key

  • 获取并移除数据

    lpop key
    rpop key

11、list 类型数据扩展操作

移除指定数据

lrem key count value

 规定时间内获取并移除数据

blpop key1 [key2] timeout
brpop key1 [key2] timeout
brpoplpush source destination timeout

list 类型数据操作注意事项

(1)list中保存的数据都是string类型的,数据总容量是有限的,最多232 - 1 个元素(4294967295)。

(2)list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作

(3)获取全部数据操作结束索引设置为-1

(4)list可以对数据进行分页操作,通常第一页的信息来自于list,第2页及更多的信息通过数据库的形式加载

12、set类型

新的存储需求:存储大量的数据,在查询方面提供更高的效率

需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询

set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的

 

通过这个名称,大家也基本上能够认识到和我们Java中的set完全一样。我们现在要存储大量的数据,并且要求提高它的查询效率。用list这种链表形式,它的查询效率是不高的,那怎么办呢?这时候我们就想,有没有高效的存储机制。其实前面咱讲Java的时候说过hash表的结构就非常的好,但是这里边我们已经有hash了,他做了这么一个设定,干嘛呢,他把hash的存储空间给改一下,右边你原来存数据改掉,全部存空,那你说数据放哪儿了?放到原来的filed的位置,也就在这里边存真正的值,那么这个模型就是我们的set 模型。

set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的。

看一下它的整个结构

13、set类型数据的基本操作

  • 添加数据

    sadd key member1 [member2]

  • 获取全部数据

    smembers key

  • 删除数据

    srem key member1 [member2]

  • 获取集合数据总量

    scard key

  • 判断集合中是否包含指定数据

    sismember key member

  • 随机获取集合中指定数量的数据

    srandmember key [count]

  • 随机获取集中的某个数据并将该数据移除集合

    spop key [count]

14、set 类型数据的扩展操作

求两个集合的交、并、差集

sinter key1 [key2 …]  
sunion key1 [key2 …]  
sdiff key1 [key2 …]

 求两个集合的交、并、差集并存储到指定集合中

sinterstore destination key1 [key2 …]  
sunionstore destination key1 [key2 …]  
sdiffstore destination key1 [key2 …]

将指定数据从原始集合中移动到目标集合中

smove source destination member 

set 类型数据操作的注意事项

set 类型不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份。

set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间。


http://chatgpt.dhexx.cn/article/SKo1vkgV.shtml

相关文章

NoSQL数据库之Redis(三):常用五大数据类型

目录 Redis键(key)常用命令 Redis字符串(String)常用命令原子性数据结构 Redis列表(List)常用命令数据结构 Redis集合(Set)常用命令数据结构 Redis哈希(Hash)常用命令数据结构 Redis有序集合Zset(sorted set)常用命令数据结构跳跃表(跳表) redis常见数据…

redis的五种数据类型

🏆作者简介:哪吒,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪 ,专注Java硬核干货分享,立志做到Java赛道全网Top N。 🏆本文收录于,Java基础教程系列,目前已经700+订阅,CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、…

Redis 的五种基本数据类型

一、String 类型 1.1 介绍 String 类型,也就是字符串类型,是 Redis 中最简单的存储类型。其 value 是字符串,不过根据字符串的格式不同,又可以分为 3 类: string:普通字符串int:整数类型&…

【Redis学习】Redis10大数据类型

总体概述 这里说的数据类型是value的数据类型,key的类型都是字符串。 redis字符串(String) string是redis最基本的类型,一个key对应一个Tvalue。 string类型是二进制安全的,意思是redis的string可以包含任何数据&am…

【Redis7学习日记】—— Redis十大数据类型

一、十大类型概述 首先,我们要知道此处的数据类型指的是 value 的类型,Redis 的 key 都是字符串类型我们通过一张图,先大致了解一下这些数据结构的样子 1.1 String 类型 String 是 Redis 中最基本的数据类型,一个 key 对应一个…

Redis的8种数据类型

目录 一、概述 1、redis是什么 2、redis能干嘛 3、redis常识 3.1、基本命令 3.2、为什么redis是单线程 二、五大数据类型 1、String 2、List列表 3、Set 4、Hash 5、Zset有序集合 三、三种特殊数据类型 1、geospatial地理位置 2、hyperloglog 3、bitmaps 一、概述…

Redis五种基本数据类型

五种基本数据类型 redis无论什么数据类型,在数据库中都是以key-value形式保存,并且所有的key(键)都是字符串,所以讨论基础数据结构都是讨论的value值的数据类型 主要包括常见的5种数据类型,分别是:String、List、Set、…

离散数学课后习题答案 左孝凌版

离散数学课后习题答案(左孝凌版) ,部分截图如下 太多了,就不在一一复制,可以扫描最上面的二维码,关注微信公众“数据结构和算法”,回复离散数学的拼音简称lssx即可获得下载地址

离散数学实验三 · 最短路径计算

一、实验目的 通过本实验的学习理解Dijkstra算法,并且编码实现最短路径问题。 二、实验内容 Dijkstra算法的理解; 算法概念:设G(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合&…

离散数学 习题篇 —— 等价关系的计数

题目: 集合A(1≤∣A∣≤100)上不同的等价关系一共多少个? 输入格式: 一行,一个整数n(1≤n≤100),表示集合A的元素个数。 输出格式: 集合A上不同等价关系的个数模1097,即输出其个数模1000000007。…

《离散数学》期末练习题

《离散数学》期末练习题 一、填空题 1、若p,q为二命题,p→q真值为0 当且仅当 。 2、A{1,{2,3}},则幂集P(A) 。 3、对于公式x(P(x)∨Q(x)),其中P(x):x1,Q(x):x2,当个体域为{1,2}时…

离散数学——命题逻辑

命题逻辑 命题命题的表示 命题联结词否定词:┐(~,Negation)合取词:∧(Conjunction)析取词:∨(Disjunction)条件词:→(条件,Conditional)双条件词:↔(等值,Biconditional)联结词的注意…

离散数学 (II) 习题 9

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、 i 是虚数单位,即 i^2^ −1。考虑如下的 4 个二阶方阵:图一G {A, −A, B, −B, C, −C, D, −D} 是由矩阵组成的集合。(1) 请验证 G 对…

-离散数学-期末练习题解析

一、 选择题二. 填空题三、 计算题四、 简答题五、 证明题六、应用题 一、 选择题 下列句子中,( )是命题。 A . 2是常数 B. 这朵花多好看啊! C. 请把们关上! D. 下午有会吗? A 命题是能判断真假的陈述句 B…

离散考试题计算机,离散数学试题及答案_离散数学试题库_离散数学试卷及答案...

离散数学试题及答案 一、填空 20% (每小题2分) 1、 P:你努力,Q:你失败。“除非你努力,否则你将失败”的翻译为 “虽然你努力了,但还是失败了”的翻译为 。 2、论域D={1,2},指定谓词P 则公式?x?yP(y,x)真值为。 2、 设S={a1 ,a2 ,?,a8},Bi是S的子集,则由B31所表达…

离散数学期末复习知识总结

为了方便考试复习,下面的内容摘自离散数学期末复习—学习笔记_Half_up-298415的博客-CSDN博客 1.命题逻辑的基本概念 1.1 命题与连接词 ~考察命题的概念 。判断是不是命题 命题::命题是陈述句,有唯一的解(就是有解并…

离散数学 习题篇 —— 谓词公式练习

集合A,B由输入的一系列整数构成,对表达式 ∀ x ( x ∈ A → ∃ y ∃ z ( y ∈ B ∧ z ∈ B ∧ ( y z x ) ) ) ∀x(x∈A→∃y∃z(y∈B∧z∈B∧(yzx))) ∀x(x∈A→∃y∃z(y∈B∧z∈B∧(yzx))) 求值并输出结果。 输入格式: 4行。 第一行是一个整数N(1≤…