首页 > 数据库 >redis-学习笔记一

redis-学习笔记一

时间:2024-08-02 13:17:23浏览次数:9  
标签:存储 示例 redis 用户 笔记 学习 字符串 集合

redis的常见数据类型及其使用场景

常见的数据类型有五种:String字符串、List列表、Hash哈希、Set集合、Zset有序集合

String字符串

  字符串是Redis中最基本的数据结构,可以存储任意类型的数据,包括文字、数字(整型、浮点等)等.它具有高效的读写操作和丰富的字符串处理函数,使用于很多场景

场景一: 缓存

  示例案例:缓存用户信息

  在Web应用中,经常需要从数据库中读取用户信息,并在多次访问中重复使用.使用redis的字符串可以将用户的信息缓存在内存中,提高读取性能.例如,将用户ID作为键,用户信息的序列化字符串作为值存储在redis中,当需要获取用户信息时,先查询redis缓存,如果缓存中不存在,则从数据库中读取,并将读取结果存储到redis缓存中,便于下次快速获取.

场景二:计数器

  示例案例:统计文章浏览量

  在很多网站中,需要统计文章的浏览量,用于评估文章的受欢迎程度,使用redis的字符串结构可以方便的实现计数器功能,例如,将文章id作为键,使用字符串结构存储文章的浏览量,每次用户浏览文章时,通过对应的键对浏览量进行自增操作,从而实现简单高效的浏览量统计.

场景三: 分布式锁

  示例案例:限制某个操作的并发执行

  在分布式系统中,为了保证数据的一致性和避免冲突,常常使用到分布式锁来控制对共享资源的访问,使用redis的字符串结构可以实现简单的分布式锁,例如,将锁的名称作为键,对应的值作为标识,通过设置键值对的过期时间和原子操作来确保锁的互斥性和超时机制,从而实现分布式系统中的并发控制.

 

List列表

列表是redis中的一个有序集合,可以存储多个字符串元素,支持从列表的两端进行元素的插入和删除操作,提供了强大的列表处理函数

场景一: 消息队列

  示例案例: 异步任务处理

  在很多应用中,需要处理大量的异步任务,使用消息队列可以有效地解耦任务的生产者和消费者.redis的列表结构可以作为简单的消息队列来使用,例如,将任务的内容作为字符串添加到redis列表的尾部,消费者从列表的头部获取任务进行处理,实现异步任务的分发处理.

场景二:最新消息排行

  示例案例: 社交媒体动态更新

  在社交媒体应用中,需要及时地向用户展示最新的消息或动态,使用redis的列表结构可以方便地实现最新消息的排行,例如将每条消息的内容作为字符串插入到redis列表的头部,限制列表的长度为固定值,当超过指定长度时,自动删除最旧的消息,从而保持最新消息的更新.

Set集合

集合是redis中的一个无序集合,可以存储多个字符串元素,并提供高效的集合操作,如交集,并集,差集等

场景一: 标签

  示例案例: 文章标签管理

  在文章管理系统中,经常需要为文章添加标签,方便用户进行分类和检索.使用redis的集合结构可以实现高效的标签管理,例如,将每篇文章的标签存储在redis的集合中,用户可以通过集合操作来查找具有特定标签的文章,还可以使用交集、并集等操作实现多标签的组合检索.

场景二:好友关系

  示例案例:社交网络好友关系

  在社交网络应用中,好友关系的管理是核心功能之一,使用redis的集合结构可以方便地实现好友关系的管理.例如:将每个用户还有列表存储在redis的集合中,使用集合操作可以快速判断两个用户是否是好友,还可以进行好友推荐等功能.

 

Hash 哈希表

哈希表是redis中一个键值对集合,可以存储多个字段和对应的值,适用于存储对象属性、配置信息等复杂数据结构.

场景一: 存储对象属性

  示例案例:用户个人信息管理

  在许多应用中,需要存储和管理用户的个人信息,使用redis的哈希结构可以方便地实现用户信息的存储和访问.例如,将每个用户的个人信息存储在一个哈希表中,使用用户id作为键,个人信息的各个属性(如姓名,年龄,性别等)作为字段,对应的值作为属性的值,通过哈希表操作可以快速获取,更新用户的个人信息.

场景二:配置信息存储

  示例案例:应用程序配置管理

  在应用程序中,通常需要存储和管理各种配置信息,如数据库连接信息、缓存策略等,使用redis的哈希表结构可以方便地存储和管理这些配置信息,例如,将配置项的名称作为字段,对应的值作为配置项的值,通过哈希表操作可以快速的获取和更新配置信息.

 

Zset或 SortedSet 有序集合

有序集合是redis中的一个有序集合,可以存储多个字符串元素,并为每个元素关联一个分数,支持按照分数进行排序和范围查找

场景一: 排行榜

  示例案例: 音乐排行榜

  在音乐播放应用中,常常需要展示热门歌曲的排行榜,使用redis的有序集合结构可以方便地实现排行功能,例如,将每首歌的名称作为字符串元素,播放次数作为分数存储在有序集合中,可以通过有序集合操作按照播放次数进行排序,快速获取热门歌曲的排行.

场景二: 计分系统

  示例案例: 游戏积分排名

  在游戏应用中,常常需要记录玩家的积分,并进行排名,使用redis的有序集合结构可以方便地实现计分系统,例如,将每个玩家的id作为字符串元素,积分作为分数存储在有序集合中,通过有序集合操作可以按照积分进行排序,快速获取玩家的排名和积分.

 

Bitmap

Bitmap是redis中一种特殊数据结构,用于存储位图索引,支持高效的位操作.

场景一: 位图索引

  示例案例: 在线用户统计

  在许多应用中,需要统计在线用户的数量,使用redis的Bitmap结构可以方便地实现在线用户的统计,例如,使用Bitmap结构,可以为每个用户分配一个位,并将位设置位1表示用户在线,0表示用户离线,通过位操作可以快速计算在线用户的数量,还可以进行更复杂的位运算,如计算两组用户的交集、并集.

标签:存储,示例,redis,用户,笔记,学习,字符串,集合
From: https://www.cnblogs.com/willbe-manager/p/18338530

相关文章

  • 微服务学习
     找不到依赖项'com.aliyun:aliyun-java-vod-upload:1.4.11'下载地址找到后报个错我是真服了PSD:\apache-maven-3.6.3\bin>mvninstall:install-file-DgroupId=com.aliyun-DartifactId=aliyun-java-vod-upload-Dversion=1.4.11-Dpackaging=jar-Dfile=D:\apache-m......
  • 学习Android-2024-08
    学习Android-2024-08-01今天内容没有具体在程序中验证,可能存在问题。明天验证。1.打印日志1.1共5个级别,Log.e、Log.w、Log.i、Log.d、Log.v,重要性依次降低。例如Log.v会看到前面Log.e、Log.w等所有的信息。而Log.e只会看到Log.e的信息。1.2输出时打的tag,利于在控制台进行搜索......
  • 人工智能深度学习系列—深度学习损失函数中的Focal Loss解析
    文章目录1.背景介绍2.Loss计算公式3.使用场景4.代码样例5.总结1.背景介绍在深度学习的目标检测任务中,类别不平衡问题一直是提升模型性能的拦路虎。FocalLoss损失函数应运而生,专为解决这一难题设计。本文将深入探讨FocalLoss的背景、计算方法、应用场景以及如......
  • 硬件开发笔记(二十九):TPS54331电源设计(二):12V转3.3V和12V转4V原理图设计
    前言  电源供电电路设计很重要,为了更好的给对硬件设计有需求的人,特意将电源设计的基础过程描述出来。  紧接前一篇12V转5V的,本篇设计常用的12V转3.3V电路,不常用的12V转4V电路。 12V转3.3V电路步骤一:应用典型电路    (依据底板和典型电路得差别,电感和电容在3......
  • Linux学习笔记9(Linux包管理)
    目录归档包管理归档查看归档包解归档包压缩包管理Zip/unzipgzip/gunzipbzip2/bunzip2源码包安装软件三大步:预备步骤:安装依赖的编译库一、./configure--prefix=/usr/local/nginx二、make三、makeinstall软件包安装配置页面内容:启动服务关闭系统防火墙访问......
  • Linux学习笔记8(Find命令进阶学习)
    目录通过所有者来查找1.指定所属的用户2.指定所属的组通过权限来查找1.指定精确的权限查找2.指定所有者(用户、组、其他人)至少有一个拥有此权限即可3.指定文件最低权限查找,即大于等于4.查找文件不是指定的权限(取反)5.查找所有只读的文件6.查找所有可执行文件......
  • PWN学习过程中一些小问题的解决方法
    一、使用python运行py文件,第一行的frompwnimport*报错File"woof.py",line1,in<module>frompwnimport*ImportError:Nomodulenamedpwn因为使用的是python3安装的pwn,使用Python的话默认使用的是python2,可以直接在终端中输入python查看自己使用的版本。......
  • 【PowerDesigner数据建模使用笔记】
    PowerDesigner使用技巧背景思考尝试如何显示表备注、表字段备注从数据库更新到模型注意事项背景使用PowerDesigner来进行数据建模的时候,表属性字段一个个输入有点太过繁琐、痛苦。思考有没其他的更好方式来快速进行数据建模,省去逐个数据表属性的键盘敲打出来呢尝......
  • 行列式学习笔记
    前置知识部分内容摘自OI-Wiki排列由\(1,2,\dots,n\)组成的有序数组称为\(1,2,\dots,n\)的排列。前\(n\)个正整数的不同排列有\(n!\)个。如果排列的逆序对个数是奇数,那么这是一个奇排列;如果排列的逆序对个数是偶数,那么这是一个偶排列。置换一个有限集合\(S\)到自......
  • 深度学习扫盲——Transforms
    在PyTorch中,torchvision是一个常用的库,它提供了对图像和视频数据的处理功能,包括数据加载、转换等。transforms是torchvision.transforms模块的一部分,它定义了一系列的图像转换操作,这些操作可以单独使用或者组合成转换序列(通过transforms.Compose),以便于在数据加载时自动应用到图像......