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.mzph.cn/news/230905.shtml

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

相关文章

使用案例总结Vlookup函数的30种用法

1 基础用法 =VLOOKUP(A12,B$1:D$8,3,0) 2 批量查找 =VLOOKUP(A11:A13,A2:C8,3,0) 3 模糊查找 =VLOOKUP("*"&D2&"*",A:B,2,0) 4 模糊查找2 =VLOOKUP(D10&"??",A:B,2,0) 5 模糊查找3 =

pycharm通过ssh连接远程服务器的docker容器进行运行和调试代码

pycharm连接远程服务器的docker容器通常有两种方法: 第一种:pycharm通过ssh连接已在运行中的docker容器 第二种:pycharm连接docker镜像,pycharm运行代码再自动创建容器 第一种方法比较通用简单,作者比较推崇。 条件…

特氟龙材质PFA、FEP、PTFE三种氟塑料试剂瓶区别

PFA、FEP、PTFE三种材质,都具有良好的耐化学性和耐热性。适合用于微量分析,痕量分析,超痕量分析ICP-MS/OES/AAS分析等实验。PFA、FEP、PTFE是三种常见的氟塑料材料,它们在石油化工、机械、半导体电子等领域得到广泛应用。虽然它们…

展示一段比较简单的人工智能自动做模型的程序

人工智能是一种模拟或模仿人类智能的技术。它通过使计算机系统具有一定的认知能力和学习能力,使其能够自动完成一系列复杂的任务。人工智能可以在各个领域应用,包括图像识别、语音识别、自然语言处理、机器学习等。人工智能还可以用于解决各种问题&#…

Docker 的基本概念、优势、及在程序开发中的应用

Docker 是一种容器化平台,它通过使用容器化技术,将应用程序及其依赖性打包到一个独立的、可移植的容器中,从而实现应用程序的快速部署、可靠性和可扩展性。 下面是 Docker 的一些基本概念和优势: 容器:Docker 使用容器化技术,将应用程序及其依赖性打包到一个可移植的容器…

CUDA C:线程、线程块与线程格

相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 第一百篇博客,写点不一样的。 当核函数在主机端被调用时,它会被转移到设备端执行,此时设备会根据核函数的调用格式产生对应的线程(…

docker在线安装minio

1、下载最新minio docker pull minio/minio 2、在宿主机创建 /usr/local/data/miniodocker/config 和 /usr/local/data/miniodocker/data,执行docker命令 docker run -p 9000:9000 -p 9090:9090 --name minio -d --restartalways -e MINIO_ACCESS_KEYminio -e MINIO_SECRET_K…

力扣225. 用队列实现栈【附进阶版】

文章目录 力扣225. 用队列实现栈示例思路及其实现两个队列模拟栈一个队列模拟栈 力扣225. 用队列实现栈 示例 思路及其实现 两个队列模拟栈 队列是先进先出的规则,把一个队列中的数据导入另一个队列中,数据的顺序并没有变,并没有变成先进后…

引领半导体划片机行业,实现钛酸锶基片切割的卓越效能

在当今快速发展的半导体行业中,博捷芯以其卓越的技术实力和精准的行业应用,脱颖而出,再次引领行业潮流。这次,他们将先进的BJX3356划片机技术应用于钛酸锶基片的切割,为半导体制造行业的进一步发展提供了强大的技术支持…

基于知识库的接口自动化测试——结果模型化方法与装置的分析

一、背景 随着自动化测试的设计理念不断完善、新的技术不断应用,自动化测试资产的积累代价和维护成本不断降低,自动化测试资产的数量持续增长。同时,随着DevOps的普及,应用研发过程越来越敏捷,自动化测试能力逐步从测…

js输入框部分内容不可编辑,其余正常输入,el-input和el-select输入框和多个下拉框联动后的内容不可修改

<tr>//格式// required自定义指令<e-td :required"!read" label><span>地区&#xff1a;</span></e-td><td>//v-if"!read && this.data.nationCode 148"显示逻辑<divclass"table-cell-flex"sty…

camera曝光时间

曝光和传感器读数 相机上的图像采集过程由两个不同的部分组成。第一部分是曝光。曝光完成后&#xff0c;第二步就是从传感器的寄存器中读取数据并传输&#xff08;readout&#xff09;。 曝光&#xff1a;曝光是图像传感器进行感光的一个过程&#xff0c;相机曝光时间&#xf…

技术阅读周刊第十期

技术阅读周刊&#xff0c;每周更新。 周四加了个班&#xff0c;周五没缓过来&#xff0c;就推迟到今天更新了 历史更新 20231117&#xff1a;第六期20231124&#xff1a;第七期20231201&#xff1a;第八期20231215&#xff1a;第九期 Golang: 14 Shorthand Tricks You Might No…

LLMs 玩狼人杀:清华大学验证大模型参与复杂交流博弈游戏的能力

作者&#xff1a;彬彬 编辑&#xff1a;李宝珠&#xff0c;三羊 清华大学研究团队提出了一种用于交流游戏的框架&#xff0c;展示了大语言模型从经验中学习的能力&#xff0c;还发现大语言模型具有非预编程的策略行为&#xff0c;如信任、对抗、伪装和领导力。 近年来&#x…

设计模式——迭代器模式

引言 迭代器模式是一种行为设计模式&#xff0c; 让你能在不暴露集合底层表现形式 &#xff08;列表、 栈和树等&#xff09; 的情况下遍历集合中所有的元素。 问题 集合是编程中最常使用的数据类型之一。 尽管如此&#xff0c; 集合只是一组对象的容器而已。 大部分集合使用…

Spring 原理(一)

Spring 原理 它是一个全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 Spring 特点 轻量级控制反转面向切面容器框架集合 Spring 核心组件 Spring 常用模块 Spring 主要包 Spring 常用注解 bean …

达索系统SOLIDWORKS 2024 云服务新功能

“云服务 是基于互联网的相关服务的增加、使用和交互模式&#xff0c;通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。 云是网络、互联网的一种比喻说法。过去在图中往往用云来表示电信网&#xff0c;后来也用来表示互联网和底层基础设施的抽象。云服务指通过网络以…

小贴士:知道方程的解如何求通解

1.思路&#xff1a;认知&#xff1a;题中的所有解都是特解&#xff0c;解的形式为kxb 1.如何求通解&#xff1a;a1a2是题目中提供的条件&#xff0c;根据认知它们的和是2b&#xff0c;所以b等于a1a3除2&#xff0c;而有一条认知&#xff0c;为两个特解的差为通解向量&#xff0…

python绘图总结

1 二维图像 1.1 二维曲线 plot(x, y, ls"-", lw1.5, labelNone)x, y&#xff1a;横坐标和纵坐标ls&#xff1a;颜色、点标记、线型列表&#xff0c;如 ls‘r*-’ 表示红色实线、*形点&#xff0c;ls‘g.’ 表示绿色散点lw&#xff1a;线宽度label&#xff1a;线标签…

波奇学Linux:进程等待

僵尸进程(Z状态)无法被kill指令杀死&#xff0c;通过进程等待杀掉它&#xff0c;解决内存泄漏问题&#xff08;进程处于僵尸态&#xff0c;仍然维护pcb结构体来解决问题&#xff09; 通过进程等待&#xff0c;获得进程退出情况 wait回收僵尸态进程 我们可以看到进程由五秒后子…