redis的基本数据结构有哪些,都有什么应用

redis的基本数据结构有:1、String(字符串);2、Hash(哈希);3、List(列表);4、Set(集合);5、zset(有序集合)。String 类型是 Redis 中最基本、最常用的数据类型,甚至被很多用户当成 Redis 少数的数据类型去使用。

redis的基本数据结构有哪些,都有什么应用-Worktile社区

1、String(字符串)

String 类型是 Redis 中最基本、最常用的数据类型,甚至被很多用户当成 Redis 少数的数据类型去使用。String 类型在 Redis 中是二进制安全(binary safe)的,这意味着 String 值关心二进制的字符串,不关心具体格式,你可以用它存储 json 格式或 JPEG 图片格式的字符串。

应用:

  • 存储一些配置数据:在前后分离式开发中,有些数据虽然存储在数据库,但是更改特别少。比如有个全国地区表。当前端发起请求后,后台如果每次都从关系型数据库读取,会影响网站整体性能。我们可以在名列前茅次访问的时候,将所有地区信息存储到redis字符串中,再次请求,直接从数据库中读取地区的json字符串,返回给前端。
  • 缓存对象:将对象转为json存储,比如商品信息,用户信息。
  • 数据统计:redis整型可以用来记录网站访问量,某个文件的下载量,签到人数、视频访问量等等。(自增自减)
  • 时间内限制请求次数:比如已登录用户请求短信验证码,验证码在5分钟内有效的场景。当用户首次请求了短信接口,将用户id存储到redis 已经发送短信的字符串中,并且设置过期时间为5分钟。当该用户再次请求短信接口,发现已经存在该用户发送短信记录,则不再发送短信。
  • 订单号(全局少数):有时候你需要去生成一个全局少数值的时候可以通过redis生成。关键命令:incrby(原子自增)。
  • 分布式session:当我们用nginx做负载均衡的时候,如果我们每个从服务器上都各自存储自己的session,那么当切换了服务器后,session信息会由于不共享而会丢失,我们不得不考虑第三应用来存储session。

2、Hash(哈希)

Hash的数据结构我们可以简单理解为java中的 Map,这种结构就特别适合存储对象,上面的String的类型确实也可以存储对象,但每次修改对象中的某一个属性,都要拿出整个json字符串在修改这个属性,之后在重新插入,而hash的接口特点让我们可以只修改该对象的某一个属性。

hash数据类型在存储上述类型的数据时具有比 String 类型更灵活、更快的优势,具体的说,使用 String 类型存储,必然需要转换和解析 json 格式的字符串,即便不需要转换,在内存开销方面,还是 hash 占优势。

应用:

  • Redisson分布式锁:Redisson在实现分布式锁的时候,内部的用的数据就是hash而不是String。因为Redisson为了实现可重入加锁机制。所以在hash中存入了当前线程ID。
  • 购物车列表:以用户id为key,商品id为field,商品数量为value,恰好构成了购物车的3个要素。
  • 缓存对象:hash类型的 (key, field, value) 的结构与对象的(对象id, 属性, 值)的结构相似,也可以用来存储对象。

3、List(列表)

List类型是按照插入顺序排序的字符串链表,一个列表非常多可以存储2^32-1个元素。我们可以简单理解为就相当于java中的LinkesdList。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。

应用:

消息队列:lpop和rpush(或者反过来,lpush和rpop)能实现队列的功能。

4、Set(集合)

Redis 中的 set和Java中的HashSet 有些类似,它内部的键值对是无序的、少数的。它的内部实现相当于一个特殊的字典,字典中所有的value都是一个值 NULL。当集合中最后一个元素被移除之后,数据结构被自动删除,内存被回收。

应用:

抽奖活动:存储某活动中中奖的用户ID ,因为有去重功能,可以保证同一个用户不会中奖两次。

sadd user 1 2 3 4 5  --把所有员工(名称或编号)放入抽奖箱   
srandmember user 1   -- 抽取一个一等奖(员工可以重复参与抽奖)
spop user 1   -- 抽取一个一等奖(员工不可以重复参与抽奖)
srandmember user 3 --抽取3个二等奖
smembers user --查看当前抽奖箱中参所有员工
scard user  --查看当前抽奖箱中参与抽奖的人数

 点赞:保证一个用户只能点一个赞。key 可以是某某文章、微信朋友圈的文章id

sadd key userId  --点赞(/收藏)
srem key userId  --取消点赞(/收藏)
smembers key     -- 获取所有点赞(/收藏)用户  
card key  -- 获取点赞用户数量
sismember key userId --判断是否点赞(/收藏)

好友人脉:key 可以是 用户id

sadd userId1 1 2 3 4 5 
sadd userId2 4 5 6 7 8 --某个user的好友id放入集合
sinter userId1 userId2 --获取共同好友
sdiff userId1 userId2 --给user2推荐user1的好友
sismember userId1 5
sismember userId2 5 --验证某个用户是否同时被user1和user2关注

5、zset(有序集合)

Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。成员是少数的,但是分数(score)却是可以重复的。

应用:作为有序的,不可重复的列表,可以做一些排行榜相关的场景:

  • 排行榜(商品销量,视频评分,用户游戏分数)
  • 新闻热搜

延伸阅读

string的有关命令

--增
set mykey "test"       --为键设置新值,并覆盖原有值
setex mykey 10 "hello" -- 设置指定 Key 的过期时间为10秒,在存活时间可以获取value
mset key3 "stephen" key4 "liu" --批量设置键
--删
del mykey --删除已有键
--改
incr mykey      --值增加1,若该key不存在,创建key,初始值设为0,增加后结果为1
decrby mykey 5  --值减少5
--查 
exists mykey   --判断该键是否存在,存在返回 1,否则返回0
get mykey      --获取Key对应的value
mget key3 key4 --批量获取键

文章标题:redis的基本数据结构有哪些,都有什么应用,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/34727

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Z, ZLWZ, ZLW认证作者
上一篇 2023年1月8日 上午6:26
下一篇 2023年1月8日 上午6:51

相关推荐

  • 为什么很多人选择前端而不选择Java

    因为当前学习前端的人确实比较多,前端开发的边界在不断拓展,整体的人才需求量也在不断增加。在移动互联网和云计算推动下,前端开发人员全栈化成为大的趋势,所以前端开发人员的岗位竞争力也在不断增强,对于广大的中小企业来说,前端开发人员往往更实用。

    2023年1月30日
    45300
  • 如何确保Scrum团队成员的持续学习

    确保Scrum团队成员持续学习有赖于系统化的方法和持续性的努力。1、提供学习资源和时间 2、鼓励团队知识共享 3、周期性回顾和学习计划 4、整合行动学习 5、激励和认可制度。通过提供学习资源和时间分配,团队能定期获取新知识。通过鼓励知识共享,能够促进团队互助和协作。设置周期性回顾和制定个人与团队学习…

    2023年12月11日
    33600
  • 都有哪些编程语言可以快速开发Windows下的GUI程序

    以快速开发Windows下的GUI程序的编程语言有:1、C#;2、Visual Basic;3、Delphi;4、易语言。C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。

    2023年2月6日
    1.9K00
  • 互联网公司推行OKR的常用OKR软件有哪些

    互联网公司推行OKR的常用OKR软件有:1、Worktile;2、PingCode Goals;3、飞书okr;4、Vision;5、Zokri。其中,Worktile 是国内较早也是非常成熟的OKR工具(据说飞书OKR一定程度就是参考Worktile的OKR功能打造的)。 OKR大概在2013年传…

    2023年2月1日
    57300
  • erp是什么

     ERP (Enterprise Resource Planning)即企业资源计划,企业资源计划是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。ERP 系统支持离散型、流程型等混合制造环境。 一、erp是什么  ERP (Enterprise Resou…

    2023年4月29日
    39400
  • 国内项目管理工具有哪些

    国内项目管理工具有:1、Worktile;2、PingCode;3、Asana;4、Epicflow;5、Backlog。其中,Worktile 是国内多个评分网站上排名名列前茅的项目管理软件,具备成熟的项目集管理能力。 一、Worktile Worktile 是国内多个评分网站上排名名列前茅的项目…

    2023年4月21日
    36900
  • DevOps如何提高应用程序性能

    随着应用程序需求的不断增长,DevOps为实现高效率、快速迭代和优化性能提供了关键的方法论和技术。本文主要讨论DevOps如何对提高程序性能产生积极影响。一、实现自动化测试和部署;二、持续集成与持续交付;三、基础设施即代码;四、监控与日志分析;五、性能反馈和快速迭代。在这五个方面中,实现自动化测试和…

    2024年1月18日
    18100
  • 项目经理如何管理相关方面的工作

    一、项目经理管理相关方面工作的方法 项目经理有效管理相关方面的工作通常涉及以下几个步骤:建立透明的沟通渠道、建立明确的目标和预期、制定和执行详细的计划、监控和控制项目进度,以及积极地管理风险和变更。 在这些方法中,建立透明的沟通渠道尤为关键,因为它涉及与项目所有相关方的连续互动,确保所有人都对项目的…

    2024年4月11日
    4700
  • 国产办公软件有哪些

    国产办公软件有:1、PingCode;2、Worktile;3、XMind;4、WPS Office;5、坚果云;6、石墨文档;7、Canva;8、转转大师。PingCode是国内软件研发项目榜单中评分较高的项目管理软件。2022年被选入国内年度口碑产品 TOP 36。适用于十几人到千人规模的的团队…

    2023年4月9日
    3.0K00
  • 如何做好项目编报管理制度

    项目编报管理制度是保障项目规范运作的重要手段,确保项目目标的明确性、项目流程的规范性、项目信息的透明度、以及项目成果的可衡量性。详细来说,项目目标明确性是制度的起点,要求项目目标与组织战略紧密相连,清晰且可量化。项目流程规范性则要求制度明确每个阶段的工作任务和责任人,确保所有参与者清楚其职责与要求。…

    2024年4月11日
    3800

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部