Redis基础教程(二):redis数据类型

news2025/1/20 1:42:33

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

文章目录

    • 引言
    • 一、字符串(Strings)
      • 描述
      • 命令
      • 案例
    • 二、哈希(Hashes)
      • 描述
      • 命令
      • 案例
    • 三、列表(Lists)
      • 描述
      • 命令
      • 案例
    • 四、集合(Sets)
      • 描述
      • 命令
      • 案例
    • 五、有序集合(Sorted Sets)
      • 描述
      • 命令
      • 案例
    • 六、Bitmaps和HyperLogLog
      • 描述
      • 案例

引言

Redis,作为一款开源的、高性能的键值存储数据库,以其卓越的速度和灵活性而闻名。其支持的丰富数据类型是其强大功能的基础,包括字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)以及Bitmaps和HyperLogLog等高级数据结构。本文将详细解析Redis的各种数据类型,并通过具体案例展示它们在实际应用中的作用和优势。

一、字符串(Strings)

描述

字符串是Redis中最基础的数据类型,它可以存储任何数据,如字符串、数字等。字符串是二进制安全的,这意味着你可以存储任何字节序列。

命令

  • SET key value: 设置键key的值为value
  • GET key: 获取键key的值。

案例

假设我们正在构建一个简单的计数器应用,每次用户访问,我们都会在Redis中增加计数器的值。

# 初始化计数器
redis-cli SET counter 0

# 每次用户访问,增加计数器的值
redis-cli INCR counter

# 查看当前计数器的值
redis-cli GET counter

二、哈希(Hashes)

描述

哈希是键值对的集合,非常适合存储对象。每个哈希都有一个唯一的键,键下面可以存储多个字段和值。

命令

  • HSET key field value: 设置哈希keyfield的值为value
  • HGET key field: 获取哈希keyfield的值。
  • HGETALL key: 获取哈希key中所有字段和值。

案例

假设我们需要存储用户信息,包括用户名、邮箱和注册日期。

# 设置用户信息
redis-cli HSET user:1 username "Alice"
redis-cli HSET user:1 email "alice@example.com"
redis-cli HSET user:1 registered "2023-01-01"

# 获取所有用户信息
redis-cli HGETALL user:1

三、列表(Lists)

描述

列表是链表结构,可以存储多个元素,元素在列表中是有顺序的。

命令

  • LPUSH key value: 将value添加到列表key的头部。
  • RPUSH key value: 将value添加到列表key的尾部。
  • LPOP key: 移除并返回列表key的第一个元素。
  • RPOP key: 移除并返回列表key的最后一个元素。

案例

假设我们正在开发一个消息队列系统,使用列表来存储待处理的消息。

# 发送一条新消息到队列
redis-cli RPUSH queue message1
redis-cli RPUSH queue message2

# 从队列中取出一条消息
redis-cli LPOP queue

四、集合(Sets)

描述

集合是不重复元素的集合,可以用于成员测试、求交集、并集、差集等操作。

命令

  • SADD key member: 将member添加到集合key中。
  • SMEMBERS key: 返回集合key中的所有元素。
  • SINTER key1 key2: 返回两个集合的交集。

案例

假设我们有两个用户组,group1和group2,我们想找出两个组中共同的用户。

# 添加用户到group1
redis-cli SADD group1 user1
redis-cli SADD group1 user2
redis-cli SADD group1 user3

# 添加用户到group2
redis-cli SADD group2 user2
redis-cli SADD group2 user3
redis-cli SADD group2 user4

# 找出两个组的交集
redis-cli SINTER group1 group2

五、有序集合(Sorted Sets)

描述

有序集合与集合相似,但是每个元素都关联了一个分数,用于排序。

命令

  • ZADD key score member: 将member添加到有序集合key中,分数为score
  • ZRANGE key start stop [WITHSCORES]: 返回有序集合key中指定范围的元素,可选参数WITHSCORES返回分数。

案例

假设我们正在维护一个排行榜,根据用户得分进行排序。

# 添加用户到排行榜
redis-cli ZADD leaderboard 100 user1
redis-cli ZADD leaderboard 200 user2
redis-cli ZADD leaderboard 150 user3

# 获取排行榜前两名
redis-cli ZRANGE leaderboard 0 1 WITHSCORES

六、Bitmaps和HyperLogLog

描述

Bitmaps和HyperLogLog是Redis提供的两种高级数据结构,用于处理大数据集的统计问题。

  • Bitmaps:使用位数组存储大量布尔值,非常节省空间。
  • HyperLogLog:用于近似计算不重复元素的数量,特别适合于大数据集。

案例

假设我们需要统计网站的独立访客数量。

# 使用HyperLogLog统计独立访客
redis-cli PFADD visitors user1
redis-cli PFADD visitors user2
redis-cli PFADD visitors user3

# 获取独立访客数量的估计值
redis-cli PFCOUNT visitors

通过上述案例,我们可以看到Redis的数据类型在实际应用中的强大功能和灵活性。理解并掌握这些数据类型,可以帮助开发者构建高效、可扩展的应用程序。在设计数据模型时,应根据具体需求选择最合适的数据类型,以实现最佳的性能和存储效率。


喜欢博主的同学,请给博主一丢丢打赏吧↓↓↓您的支持是我不断创作的最大动力哟!感谢您的支持哦😘😘😘
打赏下吧

💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

Redis相关文章索引文章链接
Redis基础教程(一):redis配置Redis基础教程(一):redis配置

❤️❤️❤️觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1880853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

揭秘品牌推广的制胜之道:步骤、流程、方法与技巧全攻略!

品牌推广是现代营销战略中的核心环节,对于提升品牌知名度、塑造品牌形象以及扩大市场份额具有举足轻重的作用。 作为一名手工酸奶品牌的创始人,目前全国复制了100多家门店,我来为大家分享品牌推广的制胜之道,包括具体步骤、流程、…

2024《汽车出海全产业数据安全合规发展白皮书》下载

随着中国制造向中国智造目标的迈进,中国汽车正以前所未有的速度和质量,在全球市场上开疆拓土。不过,在中国汽车加快出海步伐的过程中,数据安全合规风险管理成为车企不容忽视的课题。 6月25日,在中国(上海&…

Electron运行报错

安装: npm install --save-dev electron 1:报错: electron Unable to find Electron app at 2: ReferenceError: require is not defined in ES module scope, you can use importinstead 在ES模块作用域中没有定义ReferenceErr…

MathType绝对值符号在哪里 MathType绝对值怎么输入 MathType7产品密钥激活码获取

绝对值是数学中的一个重要概念,用于描述一个数在数轴上所对应的点到原点的距离。在MathType软件中可以输入绝对值符号,那具体该怎么做呢?下面由我带大家一起来了解MathType绝对值符号在哪里,MathType绝对值怎么输入的相关内容。 一…

Android - 利用 jitpack 免费发布闭源 aar

一、简述 目前(Android/java) library 的主要发布仓库有 MavenCentral 和 jitpack,我之前也对这两种仓库的发布流程做了详细介绍: 发布至 MavenCentral: https://juejin.cn/post/6953598441817636900发布至 jitpack: https://juejin.cn/post/7040733114506674183#heading-…

高考报志愿选专业,什么叫“报的好”?

考得好不如报得好,我认为这句话有一定的道理,当然前提还是考得好,分不够说啥都白扯了...但是有很多分数好,却载在报考上的例子也不少...有些直接退学,来年重考,杯具了.... 什么叫报得好? 1、适…

mysql8.0其他数据库日志

概述 我们在讲解数据库事务时,讲过两种日志:重做日志、回滚日志。 对于线上数据库应用系统,突然遭遇数据库宕机怎么办?在这种情况下,定位宕机的原因就非常关键。可以查看数据库的错误日志。因为日志中记录了数据库运行中的诊断信息&#xff…

LeetCode-213. 打家劫舍 II【数组 动态规划】

LeetCode-213. 打家劫舍 II【数组 动态规划】 题目描述:解题思路一:分三种情况,一:不考虑头尾;二:考虑头不考虑尾;三:考虑尾不考虑头。解题思路二:优化空间解题思路三&am…

Python逻辑控制语句 之 循环语句--for循环

1.for 的介绍 for 循环 也称为是 for 遍历, 也可以做指定次数的循环遍历: 是从容器中将数据逐个取出的过程.容器: 字符串/列表/元组/字典 2.for 的语法 (1)for 循环遍历字符串 for 变量 in 字符串: 重复执⾏的代码 字符串中存在多少个字符, 代码就执行…

idea乱码问题解决

乱码问题产生的根本原因 数据的编码和解码使用的不是同一个字符集 使用了不支持某个语言文字的字符集 Tomcat控制台乱码 在tomcat10.1.7这个版本中,修改 tomcat/conf/logging.properties中,所有的UTF-8为GBK即可 sout乱码问题,设置JVM加载.class文件时使用UTF-8字符集 设置虚…

Go线程调度器

基本结构 字段gcwaiting、stopwait和stopnoted都是串行运行时任务执行前后的辅助协调手段 gcwaiting字段的值用于表示是否需要停止调度 在停止调度前,该值会被设置为1在恢复调度之前,该值会被设置为0这样做的作用是,一些调度任务在执行时只…

小程序消息定时任务(定时触发器)发送总结

文章目录 小程序消息定时任务(定时触发器)发送总结1.开发思路2.实现办法3.查看定时触发器是否正常运作4.总结 小程序消息定时任务(定时触发器)发送总结 1.开发思路 在使用小程序的时候总是会遇到消息任务发送的情况,…

Cyber Weekly #13

赛博新闻 1、谷歌发布最强开源小模型Gemma-2 本周五(6月28日)凌晨,谷歌发布最强开源小模型Gemma-2,分别为9B(90亿)和27B(270亿)参数规模,其中9B 模型在多项基准测试中均…

娱乐圈发生震动,AI大模型技术已经取代了SNH48的小偶像?

自2023年以来,全球都被包裹在AI的惊天大潮之中,所有行业都在主动或被动地迎接改变。目前,各行业已经有大量公司正在把AI作为自身发展的最佳路径。其中,娱乐行业作为最被人们熟知的行业也在面对AI的发展时,发生着巨大变…

什么样的企业适合SD-WAN网络专线?

SD-WAN(Software-Defined Wide Area Network,软件定义广域网)是一种网络技术,它利用软件定义的方式管理和控制广域网(WAN),旨在提高网络效率、降低成本并简化网络管理。以下是适合采用SD-WAN网络…

【python 】python 年度人口结构数据分析与可视化(源码+数据集)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

docker仓库--centos7.9部署harbor详细过程与使用以及常见问题

文章目录 前言1.docker-compose是什么2.harbor是什么 centos7部署harbor详细过程与使用环境一、部署docker二、部署harbor1.下载docker-compose工具2.harbor安装3.拷贝样本文件,并修改文件4.安装harbor,安装完成自行启动5.查看 三、harbor的使用1.创建项…

洛谷Quasi Binary思维题之构造基础---C++

欢迎大家来到思维题系列! 本类题目老少皆宜,适合茶饭后来做! 让自己觉得自己是!废物 🆗进入正题! Quasi Binary 啧。。。。。。我们做这种构造题啊,一定要找细节!否则寸步难行&#…

面经-数据库

1.MySQL 1.1什么是MySQL? MySQL 是⼀种关系型数据库,在 Java 企业级开发中⾮常常⽤,因为 MySQL 是开源免费的,并 且⽅便扩展。阿⾥巴巴数据库系统也⼤量⽤到了 MySQL ,因此它的稳定性是有保障的。 MySQL 是开放源代码的&…

LLM端侧部署系列 | 陈天奇MLC-LLM重磅升级:基于机器学习编译的通用LLM部署引擎

引言 简介 MLCEngine的聊天功能 OpenAI风格API 云端REST API Python API iOS SDK Android SDK WebLLM SDK 小结 结构化生成 支持各种平台 优化引擎性能 总结 引言 流星透疏水,走月逆行云。 小伙伴们好,我是《小窗幽记机器学习》的小编&am…