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,一经查实,立即删除!

相关文章

分布式锁业务场景驱动与共性

分布式锁线上真实案例架构设计哲学本质解剖 1. 业务场景驱动: ①. 交易商品库锁定,防止用户重复下单.②. MQ消息去重,防止消息重复消费:a. 发送端去重b. 消费端去重③. 订单操作变更协同:a. 在用户对商品下单后,订单状态为待支付,在某一时刻用户正在对该订单做支付操作,商家对…

Linux网络配置命令

ip man ip # 显示所有网络设备的状态 ip link show # 显示指定网络设备的详细信息 ip link show <device_name> # 启用网络设备 sudo ip link set <device_name> up # 禁用网络设备 sudo ip link set <device_name> down # 删除设备IP地址 sudo ip addr de…

使用案例总结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容器通常有两种方法&#xff1a; 第一种&#xff1a;pycharm通过ssh连接已在运行中的docker容器 第二种&#xff1a;pycharm连接docker镜像&#xff0c;pycharm运行代码再自动创建容器 第一种方法比较通用简单&#xff0c;作者比较推崇。 条件…

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

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

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

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

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

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

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

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

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. 用队列实现栈 示例 思路及其实现 两个队列模拟栈 队列是先进先出的规则&#xff0c;把一个队列中的数据导入另一个队列中&#xff0c;数据的顺序并没有变&#xff0c;并没有变成先进后…

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

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

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

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

离线ODT线段树 + 二分双指针:CF1034D

https://www.luogu.com.cn/problem/CF1034D 多组询问查询区间并是好做的&#xff0c;经典套路&#xff1a;离线ODT线段树 考虑这道题&#xff0c;显然二分一下&#xff0c; 然后我们暴力跑ODT和线段树的过程&#xff0c; 每次在线段树上二分即可&#xff08;当然也可以建主席…

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…

FFmpeg零基础学习(四)——CPU视频解码 重新编码

目录 前言正文一、核心代码二、重要的API1、avformat_alloc_context2、avformat_open_input3、avcodec_alloc_context34、avcodec_parameters_to_context5、avformat_alloc_output_context26、avformat_new_stream7、avcodec_parameters_from_context END、总结的知识与问题 参…

技术阅读周刊第十期

技术阅读周刊&#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 …