首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >浅谈Redis的五大数据类型及其应用

浅谈Redis的五大数据类型及其应用

原创
作者头像
小明爱吃火锅
修改2023-10-31 12:24:43
修改2023-10-31 12:24:43
1.6K0
举报
文章被收录于专栏:小明说Java小明说Java

前言

Redis是一种开源的内存数据结构存储系统,它支持多种数据类型,包括字符串String、列表list、集合、哈希表和有序集合。这些数据类型在Redis中有着广泛的应用场景,可以满足不同的业务需求。本文将介绍Redis的五大数据类型及其应用。

一、string数据类型

常用命令: 最常用:set key value / get key 同时设置/获取多个键值:mset key value [key value] 数值增减: 递增数字:incr key 增加指定的整数:incrby key increment 递减数字:decr key 减少指定的整数:decrby key decrement 获取字符串长度:strlen key 分布式锁:setnx key value set key value [EX seconds][PX millisecond] [NX][XX] -> set lock pay ex 10 nx EX:秒过期 PX:毫秒过期 NX:key不存在的时候创建 XX:key存在的时候,覆盖

应用场景: 喜欢的商品,商品编号/订单号采用incr命令生成 是否喜欢的文章(点赞):阅读数,只要点击rest地址,直接可以使用incr key 命令增加一个数字1,取消喜欢decr key,完成记录数字

二、hash数据类型

常用命令: 一次设置/获取一个字段值:hset key field value / hget key field hset key person name z3 一次设置/获取多个字段值:hmset key field value [field value] / hmget key field [field] hmset key person name z3 age 23 获取所有字段值(key value 全部信息):hgetall key 获取某个key内的全部数量:hlen 删除一个key:hdel

应用场景:1)购物车中小厂 新增商品:hset shopcar:uid1024 prod334466 1 新增商品:hset shopcar:uid1024 prod334477 1 增加商品数量:hincrby shopcar:uid1024 prod334466 1 商品总数:hlen shopcar:uid1024 全部选择(全部商品信息):hgetall shopcar:uid1024 2)秒杀商品存储 <秒杀场次id,<秒杀商品id,秒杀商品信息>>

三、list数据类型(有序重复)

常用命令: 一次设置/获取一个字段值:hset key field value / hget key field hset key person name z3 一次设置/获取多个字段值:hmset key field value [field value] / hmget key field [field] hmset key person name z3 age 23 获取所有字段值(key value 全部信息):hgetall key 获取某个key内的全部数量:hlen 删除一个key:hdel

应用场景: 微信文章订阅公众号: 两个公众号:李永乐老师,csdn发布两篇文章11和22 只要他们发布文章聚会进到我的list lpush likearticle:userId 11 22 查看文章,类似分页,0-10 lrange likearticle:userId 0 10

四、set数据类型(不可重复,无序)

常用命令: 删除元素:sadd key member [member...] sadd set1 1 2 添加元素:srem key member [member...] 获取集合中的所有元素:smembers key 判断元素是否在集合中:sismember key member 获取集合中的元素个数:scard key 从集合中随机弹出一个元素,元素不删除:srandmember key [数字] 从集合中随机弹出一个元素,元素删除,出一个删一个:spop key [数字] 集合运算: 差集;A-B属于A不属于B :sdiff key [key] 交集:sinter key [key] 并集:sunion key [key]

应用场景: 微信抽奖小程序 1。用户id,立即参与按钮 sadd key 用户ID 2。显示已经有多少人参与了 scard key 3。抽奖(从set中任意选取N个中奖人):srandmember key 2 spop key 2 (随机抽2个并删除) 微信朋友圈点赞 1。点赞 sadd pub:msgID 点赞用户id 2。取消点赞 srem pub:msgID 点赞用户id 3。展示所有点赞的用户(头像个人信息) smembers pub:msgID 4。点赞人数统计(红色点点)scard pub:msgID 5。判断用户是否给楼主点赞 sismember pub:msgID 用户id 微博好友关注的社交关系 利用交集取公共关注的人:sinter 微博用户1 微博用户2 利用sismember判断是否我关注的人也关注他(爱好相同) QQ附近认识的人 利用差集推荐朋友的朋友给我认识 sdiff 朋友id 我的id ==》朋友的朋友

五、zset数据类型(不可重复,有序)

常用命令: 添加元素 zadd key score member [score member] zadd zset1 100 mov1 200 mov2 按照分数从小到大的顺序,返回索引从start到stop的所有元素 zrange key start stop [withscores] 获取元素的分数 zscore key member 删除元素 zrem key member [member] 获取知道分数范围的元素 zrangebyscore key min max [] 增加某个元素的分数 zincrby key increment member 获取集合中元素的数量 zcard key 获得指定分数访问内的元素个数 zcount key min max 按照排名范围删除元素 zremrangebyrank key start stop 获取元素排名 小/大 zrank/zrevrank key member

应用场景: 根据商品销售对商品进行排序显示 思路:定义商品销售排行榜(sorted set 集合),key为goods:sellsort,分数为商品销售数量 商品编号1001的销售是9,商品编号1002的销量是15 :zadd goods:sellsort 9 1001 15 1002 有一个客户又买了2件商品1001,商品编号1001销量加2:zincrby goods:sellsort 2 1001 求销量排名前10:zrevrange goods:sellsort 0 9 withscores 抖音日热搜: 1。点击视频:zincrby hotvcr:20200919 1 八百 zincrby hotvcr:20200919 14 八百 3 花木兰 2。展示当日排行榜前十条: zrevrange hotvcr:20200919 0 9 withscores

总结

在实际应用中,Redis的数据类型可以根据实际需求进行选择。例如,在缓存中,可以使用String来存储简单的键值对;在消息队列中,可以使用List来存储任务信息;在社交网络中,可以使用Set来存储共同好友关系;在用户信息中,可以使用Hash来存储用户的信息;在排行榜中,可以使用Zset来存储用户的分数信息。总的来说,Redis的五大数据类型提供了丰富的数据结构和操作方式,能够满足各种不同的应用需求。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、string数据类型
  • 二、hash数据类型
  • 三、list数据类型(有序重复)
  • 四、set数据类型(不可重复,无序)
  • 五、zset数据类型(不可重复,有序)
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档