redis进阶以及springboot连接使用redis

redis进阶--Geospatial

地理位置的缩写,可以表示一个区域的二维坐标,redis提供了经纬度设置,查询,范围查询,距离查询,经纬度hash等操作。

使用场景

在地图中可以用来计算距离我们最近的门店。

redis进阶--BloomFilter(布隆过滤器)

布隆过滤器是一段很长的二进制向量和一系列随机映射函数,用来快速检索一个元素是否在一个集合里。但是他的准确率不是百分之百,有可能判断失误(因为它存储的是hash值,而两个对象的哈希值是有极小概率相同的)。因此他不适合零失误的场景。

优点

1,支持海量数据场景下,判断元素是否存在。

2,存储空间占用量小,不存储数据本身,存储的是hash值

3,不存储数据本身,可以用来存储加密数据

缺点

不支持计数,同一个元素可以多次插入,而且效果是相同的。

使用场景
  • 用来解决缓存穿透问题
  • 可以判断用户是否阅读过某篇文章,防止重复推送,比如说抖音。

SpringBoot连接java的三种方式

  1. Jedis(redis官方提供的连接工具)
  2. springboot自带的(写法最简单,下面我们将应用它进行代码书写)
  3. redisson(基于jedis进行的深度优化,大厂通用,性能最好)

引入相关依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

配置application.yml文件

spring:redis:host: 自己的ipport: 6379password: 自己的密码

基础的增删改查

 @Resourceprivate RedisTemplate<String,String> redisTemplate;@GetMapping("/test")public String test(){//增redisTemplate.opsForValue().set("llj","123",1, TimeUnit.HOURS);//查String llj=redisTemplate.opsForValue().get("llj");System.out.println(llj);//改redisTemplate.opsForValue().set("llj","456",1,TimeUnit.HOURS);String llj2=redisTemplate.opsForValue().get("llj");System.out.println(llj2);//删除redisTemplate.delete("llj");llj=redisTemplate.opsForValue().get("llj");System.out.println("删除后"+llj);return "asas";}

redis实现限流操作(1),让同一个用户每10秒只能访问一次

 @GetMapping("/test2")public String test2(String id){String s=redisTemplate.opsForValue().get(id);if(s==null||"".equals(s)){redisTemplate.opsForValue().set(id,"aa",10,TimeUnit.SECONDS);return "可以访问";}else {return "不可以访问";}}

redis实现限流操作(2),让同一个用户每10秒只能访问5次

 @GetMapping("/test3")public String test3(String id){//一个用户十秒内只能在访问5次Long increment=redisTemplate.opsForValue().increment(id);redisTemplate.expire(id,10,TimeUnit.SECONDS);if(increment>5){return "你不能访问,访问次数是"+increment;}else {return "欢迎访问,访问次数是"+increment;}}

redis模拟实现微信抢红包功能

发红包功能

  @GetMapping("/senthongbao")public String senthongbao(Integer money){money=10;//抢红包,在红包发出的时候就已经把第几个人会得到多少钱给计算好了int[] nums = new int[5];//随机生成红包金额while (true){int sum = 0;for (int i = 0; i < 4; i++) {Random r = new Random();int ran = r.nextInt(10) + 1;sum += ran;nums[i] = ran;}if(sum >= 10){continue;}else{nums[4] = money - sum;break;}}for (int num : nums) {System.out.println(num);redisTemplate.opsForList().rightPush("bag2", String.valueOf(num));}return "生成红包成功";}

抢红包功能

   @GetMapping("/gethongbao")public String gethongbao(String id){//先判断用户是否已经抢过红包String user=redisTemplate.opsForValue().get(id);//没抢过if(user==null||"".equals(user)){String bagmoney=redisTemplate.opsForList().rightPop("bag2");if(bagmoney==null || "".equals(bagmoney)){return "红包已抢完";}else {redisTemplate.opsForValue().set(id,bagmoney);return "抢到红包,金额:"+bagmoney;}}else{//抢过了return "抢到红包,金额:"+redisTemplate.opsForValue().get(id);}}

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

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

相关文章

基于51单片机的公交ic卡系统设计

目 录 摘 要 I Abstract II 引 言 1 1 总体方案设计 3 1.1 方案选择 3 1.2 硬件选择 3 1.3 系统工作原理 4 1.4 总体方案确定 5 2 系统硬件电路设计 6 2.1 主控模块电路设计 6 2.2 电源电路设计 8 2.3 显示电路模块设计 8 2.4 报警模块电路设计 10 2.5 RC522刷卡模块 10 2.6 独…

下属OKR与上级OKR对齐时,有几种方法?

下属的OKR&#xff08;Objectives and Key Results&#xff0c;即目标与关键成果&#xff09;与上级的OKR对齐&#xff0c;是确保组织目标一致性和团队协同工作的关键步骤。以下是几种常用的对齐方法&#xff1a; 直接映射法&#xff1a;下属的OKR直接反映并支撑上级的OKR。例如…

【二】【SQL Server】如何运用SQL Server中查询设计器通关数据库期末查询大题

教学管理系统201703153 教学管理系统数据库展示 成绩表展示 课程表展示 学生表展示 院系表展示 一、基本操作 设置复合主键 设置其他表的主键 设置字段取值范围 二、简单操作 第一题 第二题 第三题 第四题 结尾 最后&#xff0c;感谢您阅读我的文章&#xff0c;希望这些内容能…

(黑马出品_04)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

&#xff08;黑马出品_04&#xff09;SpringCloudRabbitMQDockerRedis搜索分布式 微服务技术异步通信 今日目标1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比 2.快速入门2.1.安装RabbitMQ2.1.1.单机部署(1).下载镜像方式…

SICP解读指南:深度阅读 “计算机领域三巨头” 之一(文末送书)

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 书籍介绍1.1 SICP侧重点1.2 SICP章节介绍 二. 书籍推荐2.1 书籍介绍2.2 推…

[HackMyVM]靶场 Wild

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 …

Win11黑屏只有鼠标该怎么处理?

作者&#xff1a;Buzhiming User 链接&#xff1a;https://www.zhihu.com/question/472508581/answer/2275715047 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 方法1.手动启用explorer&#xff1a;CTRLshiftesc打开…

从安卓转战月薪6万的鸿蒙原来这么简单

近年来&#xff0c;各家大厂正在积极布局鸿蒙客户端开发&#xff0c;鸿蒙操作系统备受瞩目&#xff0c;不少安卓开发者纷纷转战鸿蒙&#xff0c;并取得了可观的经济回报。本文将为大家揭示&#xff0c;从安卓转战鸿蒙并获得月薪6万的简单之道&#xff0c;希望能给正在考虑转型的…

YOLOSHOW - YOLOv5 / YOLOv7 / YOLOv8 / YOLOv9 基于 Pyside6 的图形化界面

YOLOSHOW 是一个基于 PySide6&#xff08;Qt for Python&#xff09;开发的图形化界面应用程序&#xff0c;主要用于集成和可视化YOLO系列&#xff08;包括但不限于YOLOv5、YOLOv7、YOLOv8、YOLOv9&#xff09;的目标检测模型。YOLOSHOW 提供了一个用户友好的交互界面&#xff…

POS 之 最终确定性

Gasper Casper 是一种能将特定区块更新为 最终确定 状态的机制&#xff0c;使网络的新加入者确信他们正在同步规范链。当区块链出现多个分叉时&#xff0c;分叉选择算法使用累计投票来确保节点可以轻松选择正确的分叉。 最终确定性 最终确定性是某些区块的属性&#xff0c;意味…

vue3+ts+vite项目使用 unplugin-auto-import (自动导入)

该项目是基于vite创建的 vue3 ts vue-router pinia项目; 启动项目&#xff1a; npm install npm run dev启动后遇到了以下问题&#xff1a; 问题1&#xff1a; Component name "Person" should always be multi-word. eslint(vue/multi-word-component-names)…

layui柱状图tooltip获取x轴和y轴数据

核心代码 formatter: function (params) {var xValue params[0].axisValue; // 获取x轴数值var yValue params[0].value; // 获取y轴数值var str "x轴数值&#xff1a;" xValue "<br/>" "y轴数值&#xff1a;" yValue;return str;…

STM32day1

个人暂时的学后感&#xff0c;不一定对&#xff0c;没什么东西&#xff0c;为做项目奔波中。。。 1.总结keil5下载代码和编译代码需要注意的事项 下载代码&#xff1a; 从STM32CobeMX里面加载的文件会在左边栏添加对应的文件&#xff0c;下载前要先编译一下&#xff0c;不报错…

Ajax、Axios、Vue、Element与其案例

目录 一.Ajax 二.Axios 三.Vue 四.Element 五.增删改查案例 一.依赖&#xff1a;数据库&#xff0c;mybatis&#xff0c;servlet&#xff0c;json-对象转换器 二.资源&#xff1a;elementvueaxios 三.pojo 四.mapper.xml与mapper接口 五.service 六.servlet 七.html页…

1909_Arm Cortex-M3编程模型

1909_Arm Cortex-M3编程模型 全部学习汇总&#xff1a; g_arm_cores: ARM内核的学习笔记 (gitee.com) 编程模型的部分除了单独的核心寄存器描述之外&#xff0c;它还包含有关处理器模式和软件执行和堆栈的特权级别的信息。 处理器有两种模式&#xff0c;分别是线程模式和Handle…

揭秘CPU可视化:探索计算机心脏的神秘之旅

在数字化飞速发展的今天&#xff0c;中央处理器&#xff08;CPU&#xff09;作为计算机的心脏&#xff0c;其复杂度和重要性不言而喻。 中央处理器&#xff0c;这个小小的芯片&#xff0c;却承载着计算机运行的所有指令和数据处理任务。它的内部构造复杂而精密&#xff0c;每一…

antd-select组件样式,option下拉选中勾选样式,使用Drawer样式失效

注意&#xff1a;如果在使用抽屉Drawer组件时&#xff0c;在less写法中修改下拉样式ant-select-dropdown-menu不生效&#xff01;检查是否设置Drawer组件getContainer属性是否为false 原因&#xff1a; getContainer 属性决定了 Drawer 渲染的 HTML 节点位置&#xff0c;默认情…

哪些公司在招聘GIS开发?为什么?

之前我们给大家整理汇总了WebGIS在招岗位的一些特点&#xff0c;包括行业、学历、工作经验等。WebGIS招聘原来看重这个&#xff01;整理了1300多份岗位得出来的干货&#xff01; 很多同学好奇&#xff0c;这些招GIS开发的都是哪些公司&#xff1f;主要是做什么的&#xff1f; …

Java学习笔记11——内部类的继承与覆盖及总结

1、内部类的继承&#xff1a; 由于创建内部类对象的时候需要外部类的对象&#xff0c;所以在继承内部类的时候情况会比较复杂&#xff0c;需要确保内部类对象与外部类对象之间的引用正确建立&#xff0c;为了解决这个问题&#xff0c;Java提供了一种特殊的语法&#xff0c;来说…

Cesium 自定义Primitive - 圆

一、创作思路 1、创建一个自定义CustomPrimitive 2、然后根据两个点&#xff0c;生成圆 3、方便后期绘制圆 二、实现代码 1、在vue的包中加入turf. npm install turf/turf 1、创建一个CustomCirclePrimitive类,并加入更新的代码 export default class CustomCirclePrimitive …