redis各种数据类型的应用场景

String应用场景
单值缓存

        SET  key  value      GET  key     

对象缓存
  1. SET  user:1  value(json格式数据)
  2. MSET  user:1:name  zhuge   user:1:balance  1888    
  3. MGET  user:1:name   user:1:balance
分布式锁
  1.      SETNX  product:10001  true         //返回1代表获取锁成功
  2.      SETNX  product:10001  true         //返回0代表获取锁失败
  3.      。。。执行业务操作
  4.      DEL  product:10001            //执行完业务释放锁
  5.      SET product:10001 true  ex  10  nx    //防止程序意外终止导致死锁
计数器
  1.         INCR article:readcount:{文章id}      
  2.         GET article:readcount:{文章id}
  3.         Web集群session共享 spring session + redis实现session共享
  4.         分布式系统全局序列号     INCRBY  orderId  1000        //redis批量生成序列号提升性能

Hash应用场景
对象缓存
  • HMSET  user  {userId}:name  zhuge  {userId}:balance  1888
  • HMSET  user  1:name  zhuge  1:balance  1888
  • HMGET  user  1:name  1:balance  

电商购物车
  1. 以用户id为key
  2. 商品id为field
  3. 商品数量为value

购物车操作

  • 添加商品hset cart:1001 10088 1
  • 增加数量hincrby cart:1001 10088 1
  • 商品总数hlen cart:1001
  • 删除商品hdel cart:1001 10088
  • 获取购物车所有商品hgetall cart:1001
List应用场景

常用数据结构
  • Stack(栈) = LPUSH + LPOP
  • Queue(队列)= LPUSH + RPOP Blocking
  • MQ(阻塞队列)= LPUSH + BRPOP
微博和微信公号消息流

微博消息和微信公号消息

关注了MacTalk,备胎说车等大V

  • MacTalk发微博,消息ID为10018 LPUSH  msg:{诸葛老师-ID}  10018
  • 备胎说车发微博,消息ID为10086 LPUSH  msg:{诸葛老师-ID} 10086
  • 查看最新微博消息 LRANGE  msg:{诸葛老师-ID}  0  4

Set应用场景
微信抽奖小程序
  1. 点击参与抽奖加入集合 SADD key {userlD}
  2. 查看参与抽奖所有用户 SMEMBERS key      
  3. 抽取count名中奖者 SRANDMEMBER key [count] / SPOP key [count] 「备注:spop会把中奖用户删除,适用于得了二等奖就不能得一等奖的场景」

集合操作

交集:SINTER set1 set2 set3  { c }

并集:SUNION set1 set2 set3  { a,b,c,d,e }

差集:SDIFF set1 set2 set3  { a } 「备注:set1和(set2 and set3和)得差集」

微信微博点赞,收藏,标签
  1. 点赞 SADD  like:{消息ID}  {用户ID}
  2. 取消点赞 SREM like:{消息ID}  {用户ID}
  3. 检查用户是否点过赞 SISMEMBER  like:{消息ID}  {用户ID}
  4. 获取点赞的用户列表 SMEMBERS like:{消息ID}
  5. 获取点赞用户数 SCARD like:{消息ID}

集合操作实现微博微信关注模型
  1. 诸葛老师关注的人: zhugeSet-> {guojia, xushu}
  2. 杨过老师关注的人:  yangguoSet--> {zhuge, baiqi, guojia, xushu}
  3. 郭嘉老师关注的人: guojiaSet-> {zhuge, yangguo, baiqi, xushu, xunyu)
  4. 我和杨过老师共同关注: SINTER zhugeSet yangguoSet--> {guojia, xushu}
  5. 我关注的人也关注他(杨过老师): SISMEMBER guojiaSet yangguo SISMEMBER xushuSet yangguo
  6. 我可能认识的人: SDIFF yangguoSet zhugeSet->(zhuge, baiqi}

集合操作实现电商商品筛选

筛选出安卓系统intel、8G

  • SADD  brand:huawei  P40
  • SADD  brand:xiaomi  mi-10
  • SADD  brand:iPhone iphone12
  • SADD os:android  P40  mi-10
  • SADD cpu:brand:intel  P40  mi-10
  • SADD ram:8G  P40  mi-10  iphone12
  • SINTER  os:android  cpu:brand:intel  ram:8G   {P40,mi-10}
ZSet有序集合结构
  1. 点击新闻 ZINCRBY  hotNews:20190819  1  守护香港
  2. 展示当日排行前十 ZREVRANGE  hotNews:20190819  0  9  WITHSCORES
  3. 七日搜索榜单计算 ZUNIONSTORE  hotNews:20190813-20190819  7 hotNews:20190813  hotNews:20190814... hotNews:20190819
  4. 展示七日排行前十 ZREVRANGE hotNews:20190813-20190819  0  9  WITHSCORES

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iPhone 17Pro/Max或升级4800万像素长焦镜头,配备自研Wi-Fi 7芯片。

iPhone 16未至,关于iPhone 17系列的相关消息就已经放出,到底是谁走漏了风声。 海通国际证券技术分析师Jeff Pu近日发布报告称,苹果将为2025年推出的iPhone 17ProMax配备4800万像素的长焦镜头。经调查,该分析师认为提升iPhone拍摄方…

【百度PARL】强化学习笔记

文章目录 强化学习基本知识一些框架Value-based的方法Q表格举个例子 强化的概念TD更新 Sarsa算法SampleSarsa Agent类 On_policy vs off_policy函数逼近与神经网络DQN算法DQN创新点DQN代码实现model.pyalgorithm.pyagent.py总结:举个例子 实战 视频:世界…

centos安装opencv并在springboot中使用

使用conda安装opencv,并在docker运行的容器中使用,这里以运行则springboot应用的容器为例 步骤一:安装 在conda中安装 # 安装依赖 conda install numpy matplotlib# 安装opencv conda install -c conda-forge opencv # 或者制定版本 conda…

AI创作系统ChatGPT网站源码,支持AI绘画,支持GPT语音对话+智能思维导图生成

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

开发企业展示小程序的关键步骤和技巧

随着移动互联网的快速发展,小程序已经成为企业展示形象、推广产品和服务的重要工具。拥有一个优秀的小程序可以帮助企业提高品牌知名度,吸引更多潜在客户,提升用户体验。以下是拥有一个展示小程序的步骤: 确定需求和目标 首先&am…

linux修改用户uid和gid并且修改文件所有权(所属用户及所属用户组)(chown命令、chgrp命令)(批量修改查找并修改文件、目录uid和gid)

文章目录 修改Linux用户UID和GID以及文件所有权1. 修改用户的UID和GID1.1 用户UID和GID的概念1.2 修改用户UID1.3 修改用户GID 2. 修改文件所有权2.1 文件所有权的概念2.2 修改文件所有者(chown命令)2.3 修改文件所属用户组(chgrp命令&#x…

测试工具Jmeter:下载安装与环境配置

Jmeter是一款很出色的测试工具,这篇文章将介绍Jmeter的下载、安装和环境配置。 1. Jmeter下载 Jmeter官网:Apache JMeter - Download Apache JMeter 如图中所示,第一个下载项是运行在Linux中的,第二个是Windows运行的&#xff0…

Gitlab仓库推送到Gitee仓库的一种思路

文章目录 Gitlab仓库推送到Gitee仓库的一种思路1、创建Gitee的ssh公钥(默认已有Gitlab的ssh公钥)2、添加Gitlab远程仓库地址3、添加Gitee远程仓库地址4、拉取Gitlab远程仓库指定分支到本地仓库指定分支(以test分支为例)5、推送本地…

超详细整理,Java接口自动化测试实战-rest-assured

1、关于rest-assured rest-assured 是一个能够简化测试rest服务的Java DSL,像ruby或者python一样的动态语言去测试和验证http服务。 基于java并且兼容了groovy动态语言的特性,使我们像写脚本语言一样去测试http服务。 例如:你的http服务&a…

【玩转 TableAgent 数据智能分析】股票交易数据分析+预测

文章目录 一、什么是TableAgent二、TableAgent 的特点三、实践前言四、实践准备4.1 打开官网4.2 注册账号4.3 界面介绍4.4 数据准备 五、确认分析需求六、TableAgent体验七、分析结果解读八、总结&展望 一、什么是TableAgent TableAgent是一款面向企业用户的智能数据分析工…

我做了一个在手机灵动岛锁屏看实时网速/步数/下班倒计时/跑步距离/照片/待办/倒计时/手机使用次数/帧率...的软件

我做了一个在手机灵动岛&锁屏看实时网速/步数/下班倒计时/跑步距离/照片/待办/倒计时/手机使用次数/帧率…的软件 Island Widgets 的作用: 提醒您 : 准时下班每天运动陪伴家人保持体重放下手机每日待办当前网速手机使用强度实时热搜现在天气… 初…

Rsync+notify文件实时同步工具

rsync ( Remote sync,远程同步) 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备…