Redis学习笔记(6):你不得不懂的Redis五种数据类型

本文深入讲解Redis中的五种主要数据结构:String、Hash、List、Set和SortSet。每种数据结构都附带详细的命令说明及应用场景,帮助读者理解如何在实际项目中高效利用Redis。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Redis Key/Value数据类型
简介: String是最常用的一种数据类型,普通的key/value存储都可以归为此类。
  • set/get
    • 设置key对应的值为String类型的value
    • 获取key对应的值
  • mget
    • 批量获取多个key的值,如果可以不存在则返回nil
  • incr && incrby
    • incr对key对应的值进行加加操作,并返回新的值;incrby加指定值
  • setnx
    • 设置key对应的值为String类型的value,如果key已经存在则返回0
  • setex
    • 设置key对应的值为String类型的value,并设定有效期
  • 其他命令
    • getrange 获取key对应value的子字符串
    • mset 批量设置多个key的值,如果成功表示所有值都被设置,否则返回0表示没有任何值被设置
    • msetnx,同mset,不存在就设置,不会覆盖已有的key
    • getset 设置key的值,并返回key旧的值
    • append:给指定key的value追加字符串,并返回新字符串的长度
2.Hash类型讲解
  • Hash是一个String类型的field和value之间的映射表

    • Hash<String,Hash<String,String>>
  • redis的Hash数据类型的key(hash表名称)对应的value实际的内部存储结构为一个HashMap

  • Hash特别适合存储对象

  • 相对于把一个对象的每个属性存储为String类型,将整个对象存储在Hash类型中会占用更少内存。

  • 所存储的成员较少时数据存储为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。

  • 运用场景: 如用一个对象来存储用户信息,商品信息,订单信息等等。

  • Hash命令讲解

    • hset——设置key对应的HashMap中的field的value

      • hset user age 30
    • hget——获取key对应的HashMap中的field的value

      • hget user age
    • hgetall——获取key对应的HashMap中的所有field的value

    • hlen–返回key对应的HashMap中的field的数量

3.List类型讲解
  • 使用场景:消息队列
  • lpush——在key对应的list的头部添加一个元素
    • lpush user key1 key2 key3 从左向右依次添加
  • lrange——获取key对应的list的指定下标范围的元素,-1表示获取所有元素
    • lrange user 0 -1 获取user所有元素
    • lrange user 0 1 获取user前两个元素
  • lpop——从key对应的list的头部删除一个元素,并返回该元素
    • lpop user 从左向右删除第一个元素
  • rpush——在key对应的list的尾部添加一个元素
    • rpush user 从右向左添加一个元素
  • rpop——从key对应的list的尾部删除一个元素,并返回该元素
    • rpop user 从右向左删除一个元素
4.Set类型讲解
  • sadd——在key对应的set中添加一个元素
    • sadd user key1 key2 key3 key4 顺序随机
  • smembers——获取key对应的set的所有元素
    • smembers user
  • spop——随机返回并删除key对应的set中的一个元素
    • spop user
  • sunion——求给定key对应的set并集
    • sunion user user1
  • sinter——求给定key对应的set交集
    • sinter user user1
  • sdiff–求给定key对应的set差集
    • sdiff user user1
5.SortSet类型讲解
简介:set的基础增加顺序score,再根据score进行排序 实战:通过sortset实现排行榜
  • zadd ——在key对应的zset中添加一个元素
    • zadd user 1 “one” 2 “two” 3 “three”
  • zrange——获取key对应的zset中指定范围的元素,-1表示获取所有元素
    • zrange user 0 -1
  • zrem——删除key对应的zset中的一个元素
    • zrem user “three”
  • zrangebyscore——返回有序集key中,指定分数范围的元素列表,排行榜中运用
    • zrangebyscore user 1 3
  • zrank——返回key对应的zset中指定member的排名。其中member按score值递增(从小到大); 排名以0为底,也就是说,score值最小的成员排名为0,排行榜中运用
    • zrank user “two”
  • set是通过hashmap存储,key对应set的元素,value是空对象 sortset是怎么存储并实现排序的呢,hashmap存储,还加了一层跳跃表 跳跃表:相当于双向链表,在其基础上添加前往比当前元素大的跳转链接
  • Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多 种类型的数据结构,如 字符串(strings)、散列(hashes)、 列表(lists)、 集合(sets)、 有序集合(sorted sets)等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追寻真理与光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值