redis的String、List、Hash、SET、ZSet五种数据类型使用场景总结
wptr33 2024-12-18 17:32 21 浏览
1、String类型常见的使用场景
1.1 一般的业务功能模块,比如购物车
设计key值的时候,尽量简洁、明了,比如xxx:cart:001表示某个用户的购物车信息
1.2 简单的字符缓存
项目中有些地方无法保存字符,可以存储到redis中,但是注意是否要设计加上过期时间和做好key的设计,否则redis莫名其妙的key会越来越多,难以维护
1.3 储存结构体或者对象
首先把对象转换成json字符串
然后set user:01 value
或者直接存储mset user:1:name a user:1:age 18
1.4 计数功能
点赞数或者文章浏览数等,可以方便通过incr来增加,decr来减少点赞或浏览次数(
NCR article:001 GET article:001
1.5 各类场景下(单机或分布式)的标识号
比如我们常用的mysql是使用主键自增的,我们可以借助redis来帮我们生成唯一的主键,但是如果一次添加的数据比较多,会对redis有较大压力,可以一次从redis获取多个主键编号,然后使用incrby一次性增加具体的数目:incrby serialNo 1000
1.6 集群环境下的Session共享
使用spring session与redis完成session共享
1.7 redis实现分布式锁
redis使用String+lua实现分布式锁
2 hash使用场景
2.1 hash存储数据的两种结构
第一种:hmset user:1 name tom age 12
第二种:hmset user 1:name tom 2:age 12
功能
1.全选功能-获取所有该用户的所有购物车商品
2.商品数量-购物车图标上要显示购物车里商品的总数
3.删除-要能移除购物车里某个商品
4.增加或减少某个商品的数量
userid: 001 如何设计实现?
hmset cart:001 prod:01 1 prod:02 1
指令说明:
当前登录用户ID号做为KEY,商品ID号为Field, 加入购物车数量为value
我看到一篇写的比较全面的,还有代码,可以参考:使用redis的hash 实现简单的购物车功能
3 list使用场景
3.1 微信公众号列表
公众号1发布了一个消息:
lpush msg:01 1(消息id)
公众号2发布了一个消息:
lpush msg:01 2(消息id)
我的公众号消息列表:
lrange mes:01 0 5
4 set使用场景
4.1 微信抽奖活动
把抽奖的数据放入set集合 :sadd act:001 004
开始抽奖2名中奖者,随机选择2个:srandmember act:001 2 或 spop act:001 2
查看有多少用户参加了本次抽奖 :smembers act:001
4.2 微信点赞设计
面试题目:朋友圈消息ID:008,微信点赞如何设计? 张三用户ID 为userId:01
张三对消息ID008点赞啦 sadd zan:008 userId:01
张三取消了对消息008的点赞 srem zan:008 userId:01
检查用户是否点过赞 sismember zan:008 userId:01
获取消息ID008所有的点赞用户列表 smembers zan:008
消息ID008的点赞数计算 scard zan:008
4.3 两个人共同兴趣爱好,微博共同关注人等
初始关注条件
a关注的人 sadd aCare 成龙 李连杰 周星驰 c
b关注的人 sadd bCare 周星驰 周润发 张国荣 c
c关注的人 sadd cCare 周星驰 李连杰 王祖贤
1)a和b共同关注的人 sinter aCare bCare , 计算结果为 {周星驰 ,c} 计算
2) 我关注的人也关注他(c老师) sismember aCare c ;sismember cCare 周星驰 ;计算
3)我可能认识的人 SDIFF aCare bCare -> {周润发,张国荣}
5 zset使用场景
5.1 常用于排行榜,视频点赞排行,关注排行
今日头条人们换题榜
1)点击话题 zincrby topic:20191022 1 ;当前话题查看新增1
2) 展示今日前9排名的新闻 zrevrange topic:20191022 0 20 withscores
3)统计近3日点击数据,并存放的新的集合 zunionstore topic:3day 3 topic:20191022 topic:20191021 topic:20191020
4) 展示近3日的排行前9名 zrevrange topic:20191022-20191020 0 9 withscores
相关推荐
- SpringBoot 3 + Flutter3 实战低代码运营管理-10章
-
获课》aixuetang.xyz/5075/三天构建运营管理系统:SpringBoot3+Flutter3高效开发方法论...
- SpringBoot探针实现:从零构建应用健康监控利器
-
SpringBoot探针实现:从零构建应用健康监控利器声明本文中的所有案例代码、配置仅供参考,如需使用请严格做好相关测试及评估,对于因参照本文内容进行操作而导致的任何直接或间接损失,作者概不负责。本文...
- Spring Batch中的JobRepository:批处理的“记忆大师”是如何工作
-
一、JobRepository是谁?——批处理的“档案馆”JobRepository是SpringBatch的“记忆中枢”,负责记录所有Job和Step的执行状态。它像一位严谨的档案管理员,把任务执...
- 还在为 Spring Boot3 技术整合发愁?一文解锁大厂都在用的实用方案
-
你在使用SpringBoot3开发后端项目时,是不是常常陷入这样的困境?想提升项目性能和功能,却不知道该整合哪些技术;好不容易选定技术,又在配置和使用上频频踩坑。其实,这是很多互联网大厂后端开发...
- 一文吃透!Spring Boot 项目请求日志记录,这几招你绝对不能错过!
-
在互联网应用开发的高速赛道上,系统的稳定性、可维护性以及安全性是每一位开发者都必须关注的核心要素。而请求日志记录,就如同系统的“黑匣子”,能够为我们提供排查故障、分析用户行为、优化系统性能等关键信息...
- spring-boot-starter-actuator简单介绍
-
SpringBootActuator是SpringBoot的一个功能强大的子项目,它提供了一些有用的监控和管理SpringBoot应用程序的端点。SpringBootActuat...
- 使用SpringBoot钩子或Actuator实现优雅停机
-
服务如何响应停机信号在java中我们可以直接利用通过Runtime...
- 28-自定义Spring Boot Actuator指标
-
上篇我们学习了《27-自定义SpringBootActuator健康指示器》,本篇我们学习自定义SpringBootActuator指标(Metric)。...
- 如何在Spring Boot中整合Spring Boot Actuator进行服务应用监控?
-
监控是确保系统稳定性和性能的关键组成部分,而在SpringBoot中就提供了默认的应用监控方案SpringBootActuator,通过SpringBootActuator提供了开箱即用的应...
- 「Spring Boot」 Actuator Endpoint
-
Actuator官网地址:https://docs.spring.io/spring-boot/docs/2.5.6/reference/html/actuator.html目的监控并管理应用程序...
- Spring Boot Actuator监控功能全面剖析
-
SpringBootActuator监控功能全面剖析在现代企业级Java开发中,SpringBoot以其轻量化、高效率的特性深受开发者青睐。而作为SpringBoot生态系统的重要组成部分,S...
- 1000字彻底搞懂SpringBootActuator组件!
-
SpringBootActuator组件SpringBootActuator通过HTTPendpoints或者JMX来管理和监控SpringBoot应用,如服务的审计、健康检查、指标统计和...
- JavaScript数据类型(javascript数据类型介绍)
-
基本数据类型BooleanNullNumberStringSymbolUndefined对象数据类型ObjectArray定义:JavaScript数组是内置的对象之一,它可以用一个变量来存储多个同种...
- 能运行,不代表它是对的:5 个潜伏在正常功能下的 JavaScript 错误
-
JavaScript的动态性和复杂性意味着,代码虽然表面上正常运行,但一些深层次、隐蔽的陷阱往往让人意想不到,梳理了几个JavaScript开发中难以发现的隐蔽错误,旨在帮助我们写出更健壮、更可...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
-
- SpringBoot 3 + Flutter3 实战低代码运营管理-10章
- SpringBoot探针实现:从零构建应用健康监控利器
- Spring Batch中的JobRepository:批处理的“记忆大师”是如何工作
- Github霸榜的SpringBoot全套学习教程,从入门到实战,内容超详细
- 还在为 Spring Boot3 技术整合发愁?一文解锁大厂都在用的实用方案
- 一文吃透!Spring Boot 项目请求日志记录,这几招你绝对不能错过!
- spring-boot-starter-actuator简单介绍
- 使用SpringBoot钩子或Actuator实现优雅停机
- 28-自定义Spring Boot Actuator指标
- 如何在Spring Boot中整合Spring Boot Actuator进行服务应用监控?
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)