Redis数据类型介绍

2 篇文章 0 订阅
2 篇文章 0 订阅

Redis数据类型

1.数据存储类型介绍

作为缓存使用

  1. 原始业务功能设计
  • 秒杀 618活动
  • 双11活动
  • 排队购票
  1. 运营平台监控到的突发高频访问数据
  • 突发时政要闻,被强势关注围观
  1. 高频、复杂的统计数据
  • 在线人数
  • 投票排行榜

附加功能
系统功能优化或升级

  • 单服务器升级集群
  • Session 管理
  • Token 管理

2.Redis 数据类型(5种常用)

  • string String
  • hash HashMap
  • list LinkedList
  • set HashSet
  • sorted_set TreeSet

redis 数据存储格式

  • redis 自身是一个 Map,其中所有的数据都是采用 key : value 的形式存储
  • 数据类型指的是存储的数据的类型,也就是value 部分的类型,key 部分永远都是字符串
    在这里插入图片描述

1.string 类型

  • 存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
  • 存储数据的格式:一个存储空间保存一个数据
  • 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用。

基本命令

  • 添加/修改数据
    set key value
  • 获取数据
    get key
  • 删除数据
    del key
  • 添加/修改多个数据
    mset key1 value1 key2 value2 …
  • 获取多个数据
    mget key1 key2 key3 …
  • 获取数据字符个数(字符串长度)
    strlen key
  • 追加信息到原始信息后部(如果原始信息存在就追加,否则新建)
    append key value

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

  • string在redis内部存储默认就是一个字符串,当遇到增减类操作incr,decr时会转成数值型进行计算。
  • redis所有的操作都是原子性的,采用单线程处理所有业务,命令是一个一个执行的,因此无需考虑并发
    带来的数据影响。
  • 注意:按数值进行操作的数据,如果原始数据不能转成数值,或超越了redis 数值上限范围,将报错。

9223372036854775807(java中long型数据最大值,Long.MAX_VALUE)

2.hash 类型

  • 新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
  • 需要的存储结构:一个存储空间保存多个键值对数据
  • hash类型:底层使用哈希表结构实现数据存储

在这里插入图片描述
hash存储结构优化

  • 如果field数量较少,存储结构优化为类数组结构
  • 如果field数量较多,存储结构使用HashMap结构

hash 类型数据的基本操作

  • 添加/修改数据
    hset key filed value

  • 获取数据
    hget key filed (获取单个属性的值)
    hgetall key (获取key中所有的属性和值)

  • 删除数据
    hdel key filed1 filed2 …

  • 添加/修改多个数据
    hmset key filed1 value1 filed2 value2 …

  • 获取多个数据
    hmget key filed1 filed2 …

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

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

  • 获取哈希表中所有的字段名或字段值
    hkyes key (获取所有的字段名)
    hvals key (获取所有的字段值)

  • 设置指定字段的数值数据增加指定范围的值
    hincrby key field increment (整数增加)
    hincrbyfloat key field increment (带小数)

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

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

3.list类型

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

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

  • list类型:保存多个数据,底层使用双向链表存储结构实现
    在这里插入图片描述
    list 类型数据基本操作

  • 添加/修改数据
    lpush key1 value1 value2 …
    rpush key1 value1 value2 …

  • 获取数据
    lrange key start stop (获取该key的数据从哪里开始到结束)
    lindex key index (获取该key对应索引的值)
    llen key(获取该key列表里面的个数)

  • 获取并移除数据
    lpop key (往列表左边移除一个元素)
    rpop key(往列表右边移除一个元素)

  • 规定时间内获取并移除数据(多少秒后没有获取到该key就取消操作)
    blpop key1 key2 timeout
    brpop key1 key2 timeout
    brpoplpush source destination timeout

  • 移除指定数据的个数
    lrem key count value

list 类型数据操作注意事项

  • list中保存的数据都是string类型的,数据总容量是有限的,最多2的
    32次方- 1 个元素 (4294967295)。
  • list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作
  • 获取全部数据操作结束索引设置为-1
  • list可以对数据进行分页操作,通常第一页的信息来自于list,第2页及更多的信息通过数据库的形式加载

4.set 类型

  • 新的存储需求:存储大量的数据,在查询方面提供更高的效率
  • 需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
  • set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的

在这里插入图片描述
set 类型数据的基本操作

  • 添加数据
    sadd key1 member1 member2 …
  • 获取全部数据
    smembers key
  • 删除数据
    srem key member1 member2 …
  • 获取集合数据总量
    scard key
  • 判断集合中是否包含指定数据
    sismember key member

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

  • set 类型不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份
  • set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间

3.sorted_set 类型

  • 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式
  • 需要的存储结构:新的存储模型,可以保存可排序的数据
  • sorted_set类型:在set的存储结构基础上添加可排序字段

在这里插入图片描述
sorted_set 类型数据的基本操作

  • 添加数据
    zadd key score1 member1 score2 member2 …
  • 获取全部数据(带withscores能获取score值)
    zrange key start stop withscores(低score值排前)
    zrevrange key start stop withscores(高score值排前)
  • 删除数据
    zrem key member1 member2 …
  • 按条件获取数据(获取min到max范围内的值)
    zrangebyscore key min max withscores
    zrevrangebyscore key max min withscores
  • 条件删除数据
    zremrangebyrank key start stop
    zremreangebyscore key min max

注意:

  1. min与max用于限定搜索查询的条件
  2. start与stop用于限定查询范围,作用于索引,表示开始和结束索引
  • 获取集合数据总量
    zcard key (获取所有)
    zcount key min max(获取min到max范围的所有)

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

  • score保存的数据存储空间是64位,如果是整数范围是-9007199254740992~9007199254740992
  • score保存的数据也可以是一个双精度的double值,基于双精度浮点数的特征,可能会丢失精度,使用时候要慎重
  • sorted_set 底层存储还是基于set结构的,因此数据不能重复,如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值