spring整合redis(集群、主从)及集群异常处理

Spring整合Redis最佳实践与性能优化指南 Redis作为高性能内存数据库,与Spring生态的深度整合是现代分布式系统的关键技术组合。通过连接池管理、序列化优化和高可用配置,开发者可以显著提升系统吞吐量和稳定性。在微服务架构中,合理的Redis配置能够有效解决缓存穿透、雪崩等典型问题,同时通过Lettuce或Jedis客户端的选择平衡性能与可靠性。本文以电商秒杀场景为例,详细解析连接池参数计算公式(max-active = QPS × avg_rt × 2),并对比Jackson2Json与JDK序列化的性能差异,为高并发场景提供经过验证的配置方案 阅读详情

部分转自:https://blog.youkuaiyun.com/sunqingzhong44/article/details/70976038?locationNum=6&fps=1

pom.xml文件:

注:若spring-data-redis版本过低,在spring中配置时有些类会没用

        <!-- redis begin -->
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.9.0</version>
		</dependency>

        <!-- spring-redis实现 -->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-redis</artifactId>
			<version>1.7.5.RELEASE</version>
		</dependency>

redis集群主要配置:

redis-cluster.properties

redis.host1=192.168.1.235
redis.port1=7001
redis.host2=192.168.1.235
redis.port2=7002
redis.host3=192.168.1.235
redis.port3=7003
redis.host4=192.168.1.235
redis.port4=7004
redis.host5=192.168.1.235
redis.port5=7005
redis.host6=192.168.1.235
redis.port6=7006
 
#有多少个redis就设置多少
redis.maxRedirects=6
redis.maxIdle=30
redis.maxTotal=100
redis.minIdle=5
redis.maxWaitMillis=30000 
redis.testOnBorrow=true
redis.testOnReturn=true 
redis.testWhileIdle=true
redis.timeout=3000

redis-cluster.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
                            http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
                            http://www.springframework.org/schema/tx 
                            http://www.springframework.org/schema/tx/spring-tx-4.0.xsd  
                            http://www.springframework.org/schema/context  
                            http://www.springframework.org/schema/context/spring-context-4.0.xsd  
                            http://www.springframework.org/schema/mvc  
                            http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
  
		 <bean id="redisClusterConfiguration" class="org.springframework.data.redis.connection.RedisClusterConfiguration">  
				<property name="maxRedirects" value="${redis.maxRedirects}"></property>  
				<property name="clusterNodes">  
					<set>  
						<bean class="org.springframework.data.redis.connection.RedisNode">  
							<constructor-arg name="host" value="${redis.host1}"></constructor-arg>  
							<constructor-arg name="port" value="${redis.port1}"></constructor-arg>  
						</bean>  
						<bean class="org.springframework.data.redis.connection.RedisNode">  
							<constructor-arg name="host" value="${redis.host2}"></constructor-arg>  
							<constructor-arg name="port" value="${redis.port2}"></constructor-arg>  
						</bean>  
						<bean class="org.springframework.data.redis.connection.RedisNode">  
							<constructor-arg name="host" value="${redis.host3}"></constructor-arg>  
							<constructor-arg name="port" value="${redis.port3}"></constructor-arg>  
						</bean>  
						<bean class="org.springframework.data.redis.connection.RedisNode">  
							<constructor-arg name="host" value="${redis.host4}"></constructor-arg>  
							<constructor-arg name="port" value="${redis.port4}"></constructor-arg>  
						</bean>  
						<bean class="org.springframework.data.redis.connection.RedisNode">  
							<constructor-arg name="host" value="${redis.host5}"></constructor-arg>  
							<constructor-arg name="port" value="${redis.port5}"></constructor-arg>  
						</bean>  
						<bean class="org.springframework.data.redis.connection.RedisNode">  
							<constructor-arg name="host" value="${redis.host6}"></constructor-arg>  
							<constructor-arg name="port" value="${redis.port6}"></constructor-arg>  
						</bean>  
				</set>  
		</property>  
	</bean>  
	
	
	<bean id="jedisPoolConfig"   class="redis.clients.jedis.JedisPoolConfig">  
		<property name="maxTotal" value="${redis.maxTotal}" />
        <property name="maxIdle" value="${redis.maxIdle}" />
        <property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
        <property name="testOnBorrow" value="${redis.testOnBorrow}" />
    </bean>  
	   
	<bean id="jeidsConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"  >  
		 <constructor-arg name="clusterConfig" ref="redisClusterConfiguration"/>  
         <constructor-arg name="poolConfig" ref="jedisPoolConfig"/>   
	</bean>  
	  
	<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">  
		<property name="connectionFactory" ref="jeidsConnectionFactory" />
		 <property name="keySerializer" >  
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
        </property>  
        <property name="valueSerializer" >  
            <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />  
        </property>  
        <property name="hashKeySerializer">  
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>  
        </property>  
        <property name="hashValueSerializer">  
            <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>  
        </property>  
	</bean>   
	    
  </beans>

redis 主从配置

redis-ms.properties

# Redis settings  
#sentinel1的IP和端口  
sentinel1.host=192.168.1.233
sentinel1.port=26379  
#sentinel2的IP和端口  
sentinel2.host=192.168.1.233
sentinel2.port=26378 
 
im.hs.server.redis.maxIdle=500  
#最大连接数,超过此连接时操作redis会报错  
im.hs.server.redis.maxTotal=5000  
im.hs.server.redis.maxWaitTime=1000  
im.hs.server.redis.testOnBorrow=true  
#最小闲置连接数,spring启动的时候自动建立该数目的连接供应用程序使用,不够的时候会申请。  
im.hs.server.redis.minIdle=300
im.hs.server.redis.sentinel.masterName=mymaster

redis-ms.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
                            http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
                            http://www.springframework.org/schema/tx 
                            http://www.springframework.org/schema/tx/spring-tx-4.0.xsd  
                            http://www.springframework.org/schema/context  
                            http://www.springframework.org/schema/context/spring-context-4.0.xsd  
                            http://www.springframework.org/schema/mvc  
                            http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
  
  
  
         <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">  
		        <property name="maxTotal" value="${im.hs.server.redis.maxTotal}" />  
		        <property name="minIdle" value="${im.hs.server.redis.minIdle}" />  
		        <property name="maxWaitMillis" value="${im.hs.server.redis.maxWaitTime}" />  
		        <property name="maxIdle" value="${im.hs.server.redis.maxIdle}" />  
		        <property name="testOnBorrow" value="${im.hs.server.redis.testOnBorrow}" />  
		        <property name="testOnReturn" value="true" />  
		        <property name="testWhileIdle" value="true" />  
   		 </bean> 
   		  
		<bean id="redisSentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration">
		    <property name="master">
		        <bean class="org.springframework.data.redis.connection.RedisNode">
		            <property name="name" value="${im.hs.server.redis.sentinel.masterName}"/>
		        </bean>
    		</property>
		    <property name="sentinels">
		        <set>
		            <bean class="org.springframework.data.redis.connection.RedisNode">
		                <constructor-arg name="host" value="${sentinel1.host}"></constructor-arg>
		
		                <constructor-arg name="port" value="${sentinel1.port}"></constructor-arg>
		            </bean>
		            <bean class="org.springframework.data.redis.connection.RedisNode">
		                <constructor-arg name="host" value="${sentinel2.host}"></constructor-arg>
		
		                <constructor-arg name="port" value="${sentinel2.port}"></constructor-arg>
		            </bean>
		        </set>
		    </property>
	    </bean>
 
		<bean id="jeidsConnectionFactory"
			class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
		    	  <constructor-arg name="sentinelConfig" ref="redisSentinelConfiguration"></constructor-arg>  
        <constructor-arg name="poolConfig" ref="poolConfig"></constructor-arg>  	
		</bean>
 
 
		<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
		    <property name="connectionFactory" ref="jeidsConnectionFactory"/>
		</bean>
	    
</beans>

使用:

@Service
@Transactional(readOnly=true)
public class UserServiceImpl implements UserService {
	
	@Autowired
	private UserDao userDao;
	@Autowired
	private RedisTemplate<String, Object> redisTemplate;
	
	@Override
	@Transactional(readOnly=false)
	public void add(final User user) {
		// TODO Auto-generated method stub
		userDao.save(user);
		System.out.println("--------------添加redis缓存---------------------------");
		
 
		redisTemplate.execute(new RedisCallback<Object>() {  
            @Override  
            public Object doInRedis(RedisConnection connection)  
                    throws DataAccessException {  
                connection.hSet(redisTemplate.getStringSerializer().serialize("SYS_USER_TAB"),
                        redisTemplate.getStringSerializer().serialize("USER_"+user.getId()),  
                        redisTemplate.getStringSerializer().serialize(JSONObject.toJSONString(user)));  
              System.out.println(redisTemplate.getStringSerializer().serialize("USER_"+user.getId()));
                return null;  
            }  
        });  
		
		
		
	}
 
}

 异常处理:

1.Caused by: java.lang.NumberFormatException: For input string: "7006@17006"

 解决办法:将redis的jar包改为2.9.0即可

2.(error) MOVED 11469 192.168.163.249:7002

 解决办法:配置redis集群,单个redis无法存值

 

 

Spring框架整合Redis哨兵模式的实战教程 Spring框架作为Java领域内广泛使用的全能型应用框架,其对缓存技术的支持是其多功能性的体现之一。整合Redis作为缓存解决方案,是现代企业级应用常见的实践。在Spring环境中,Spring Data Redis项目为我们提供了一种简化Redis操作的方式,使得开发者能够更加专注于业务逻辑的实现,而不是复杂的Redis API调用。本章将简要介绍Spring框架整合Redis的基本概念、优势以及如何快速启动一个Spring与Redis整合的项目。 阅读详情

相关推荐

Pico设备手势追踪实战:5步搞定MRTK3手部模型与UI交互配置

本文详细介绍了在Pico设备上使用MRTK3实现手势追踪的5个关键步骤,包括环境配置、手部模型冲突解决、射线交互优化、UI交互配置及性能优化。通过实战案例和代码示例,帮助开发者快速解决MR开发中的常见问题,提升混合现实应用的交互体验。

onion的博客 497

Redis Cluster集群扩容主从节点详细教程

文章目录1.Cluster集群扩容概念2.在新节点部署redis cluster3.使用工具将redis-4加入集群3.1.安装ruby环境3.2.将redis-4加入集群4.将槽位重新分配4.1.所有节点分出槽位给新节点4.2.迁移指定节点的槽位给新节点4.3.查看集群信息及状态5.配置四主四从交叉复制5.1.配置四主四从交叉复制5.2.查看集群信息及状态 1.Cluster集群扩容概念 当redis数据量日渐增长,当内存不够用的时候,这时候就需要集群扩容了,cluster集群扩容可以增加内存也可以增加节

江晓龙的博客 7353

告别仿真失败!用Sigrity 2022 SystemSI搞定DDR4信号质量仿真的保姆级流程

本文详细介绍了如何使用Sigrity 2022 SystemSI工具进行DDR4信号完整性仿真,提供了一套避免仿真失败、提高仿真精度和加速仿真流程的保姆级方法。从模型验证、设计数据预处理到拓扑构建和参数提取,再到高级调试技巧和仿真加速方案,帮助硬件工程师系统性地解决DDR4信号质量仿真中的常见问题。

weixin_42537499的博客 341

SpringBoot整合Redis集群

SpringBoot整合Redis集群。

Dancefff的博客 1379

液晶屏LVDS接口:【图文详讲】

​LVDS(Low Voltage Differential Signaling,即低电压差分信号)接口又称RS-644总线接口,是20世纪90年代才提出的一种数据传输和接口技术。LVDS接口是美国NS美国国家半导体公司为克服以TTL电平方式传输宽带高码率数据时功耗大,电磁干扰大等缺点而研制的一种数字视频信号传输方式

weixin_66299220的博客 1万+

STM32 FMC驱动AD7606实战:从硬件连接到时序调试全流程解析

本文详细解析了STM32 FMC驱动AD7606的全流程,包括硬件连接、FMC接口配置、驱动程序设计和时序调试。通过实战案例,展示了如何利用STM32的FMC总线实现与AD7606的高效数据传输,特别强调了电源设计、信号连接和PCB布局等关键要点,为嵌入式数据采集系统开发提供了实用指导。

aa123的博客 1004

【redis相关】redis集群结合Spring配置的一些问题

项目中要将单机版redis服务器改为redis集群,配置的过程和配置过程中遇到的一些问题作如下记录。 首先修改redis的配置文件redis.conf daemonize yes port xxxx (每个节点一个端口) cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 因为要让r...

名侦探张六儿的博客 600

ArcGIS基础:城市交通网络构建及设施服务分析(一):道路数据处理与拓扑操作

首先需要加载数据, 1:选择这个数据库:,右键导入,选择导入单个要素,弹出“要素类至要素类” 2:输出位置(导入的数据是CAD格式数据)。 3:输出要素类为道路。 4:字段只保留道路类型字段。 这个操作是分类合并各级道路数据。 1:通过属性选择各类道路数据。 2:比如此类都是“干道”。 3:编辑器下来,然后合并即可。 得到如图所示,需要用到三个字段。 上面这个操作是打断道路相交线。 1:选中所有数据。 2:找到高级编辑中的打断相交线。 3:确定即可。 下面进行拓扑检查,虽然我们已经进行合并和打断相交.

yuanYW7556的博客 2万+

springboot整合redis、MySQL报错dataSource重复定义问题解决

问题发生:在配置springboot项目连接redis缓存,实现验证码限时有效,出现如下报错,2、在启动类中排除ShardingSphere的自动配置,因为已经使用Druid作为数据源。1、在项目的application.yml文件中添加配置。

weixin_73769653的博客 512

IDEA出现闪退或打不开的解决方法

本身项目比较大,为了打开这个软件,可调节IDEA中安装的bin目录下有个。打开IDEA的时候过一会便闪退,可以再IDEA的右下角看到如下提示。(如果没有该提示,软件右下角也会有个红色感叹号,点开查看原因即可)闪退的多数原因大致是out of memory,内存溢出。查看任务管理器中的进程:(发现内存随时有溢出的情况)但也需要注意,该参数并不是越大越好,适中即可。只有个别原因是需要管理员权限就可执行!可以尽量减少软件的启动。

码农研究僧的博客 5943

A*搜索算法在三维路径规划(避障)中的MATLAB实现与Python实现

A star algorithmA*搜索算法简介A*搜索算法的Python简化代码MATLAB实现启发函数回溯轨迹RRT算法对比A\*算法在三维路径规划中的一些不足 A*搜索算法简介 A*搜索算法是Greedy Best-First算法的改进,因为Greedy Best-First算法只考虑将预估距离(当前节点到目标点的预估距离)作为遴选开节点集的条件。即: priority=heuristic(goal,next)priority=heuristic(goal, next)priority=heurist

ZYunfei的博客 2万+

Redis集群部署及Springboot架构下应用(主从集群模式)

环境: redis:5.0.8 Springboot: 2.2.3.RELEASE redis安装参见:CentOS7下安装Redis(单机版) 集群方式及配置 基础配置集群配置: 后台运行(守护进程) daemonize yes 去除保护模式(允许远程访问) protected-mode no #去除绑定(远程访问) #bind 127.0.0.1 # 设置密码 requirepass red...

一只懂代码不懂人情世故的源码爱好猿 1万+

多周期路径约束(set_multicycle_path )

1.由慢到快的多周期约束 如下图所示,发射时钟周期是接受时钟周期的4倍。默认情况下,按照1T原则来进行静态时序分析和布局布线的。即建立时间是在发射沿后的第一个捕获沿检查,而保持时间是同一时刻下源时钟和捕获时钟的触发边沿下检查的(建立时间检查边沿的前一个触发沿)。 但是这样导致的问题就是该路径过于苛刻,为了满足这条路径的要求,不得不放弃其他路径。或者根本没办法保证这个默认的约束。总之最终造成...

Arist. 5505

Spring项目整合Redis分布式锁全解析

通过以上步骤,我们成功在Spring项目中整合了Redis分布式锁,实现了对共享资源的安全访问控制。异常处理:在获取和释放锁的过程中,可能会出现各种异常,需要进行适当的异常处理,确保系统的稳定性。锁的优化:可以根据业务需求,对锁的过期时间、重试机制等进行优化,提高系统性能。集群环境:在Redis集群环境下,需要考虑使用更高级的分布式锁算法,如Redlock算法,以确保锁的可靠性和容错性。

恩爸编程 1466

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【Linux】搭建 Redis 集群 实现高可用

本文详细介绍了在Linux环境下搭建Redis集群的全过程,从环境准备、配置文件生成到集群创建与验证。主要内容包括: Redis集群的必要性:解决单点故障、容量瓶颈等问题 环境准备:系统要求、Redis安装步骤 集群配置:创建6节点(3主3从)目录结构,提供配置模板和批量生成脚本 集群启动:实例启动和集群创建命令 集群验证:状态检查和节点信息查看 分片原理:通过CRC16算法实现数据分布 Java客户端连接:推荐使用Lettuce客户端 该方案实现了Redis的高可用性,支持自动故障转移和数据分片,适合生产

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Redis与Spring Session整合实现分布式会话管理

分布式会话管理是现代Web应用架构中的关键技术,通过将会话数据从应用服务器剥离到外部存储,解决了传统Servlet会话的单点故障和扩展性问题。Redis作为高性能内存数据库,凭借其10万+ QPS的吞吐量和丰富的数据结构,成为会话存储的理想选择。Spring Session作为抽象层,提供了统一的会话管理接口,与Redis深度整合后能实现30分钟自动过期的生产级会话管理。这种方案特别适合电商秒杀、在线教育等高并发场景,通过JSON序列化和连接池优化,可使会话读写延迟控制在1ms以内。在安全方面,结合Spri

weixin_34080571的博客 431

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Redis 零基础到进阶,Spring Boot 整合 Redis,笔记93-99

Redis 零基础到进阶,Spring Boot 整合 Redis,笔记93-99

道友 482

redis的分片,原理,及项目整合redis的使用步骤

1.Redis介绍 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询等。 1.1为什么需要使用缓存 使用缓存可以有效的降低用户访问物理设备的频次,有效的减少并发的压力。保护后端真实的服务器。 2.Redis入门案例 2.1引入jar包 spring提供了redis的依赖jar包 &l

m0_46436542的博客 1080

Spring MVC 集成 Redis集群

首先说一下我的包   commons-pool2-2.0.jar   jedis-2.7.2.jar   spring-data-redis-1.4.2.RELEASE.jar   tomcat-redis-session-manager1.2.jar 属性文件 redis.properties 属性文件 address1=127.0.0.1:7002 addres...

diandia9759的博客 188

Redis--Jedis应用与Spring Boot整合Redis

JedisPool是全局性的,整个类只需要创建一次即可,然后每次操作Redis时,从JedisPool中拿出一个Redis实例即可。Jedis实例创建之后,其底层会创建一个指定Redis服务器的Socket连接,所以为了节省资源,每次使用完Jedis实例后,要立即调用close()方法关闭连接。频繁的创建和销毁Jedis实例,虽然节省系统资源和网络带宽,但会降低系统性能,因为创建和销毁连接比较耗时,此时可以使用Jedis连接池来解决该问题。这个节点可以是集群中的任意节点,只要连上该节点,就连上了整个集群。

GJ88yM0NA的博客 161

Redis集群的使用测试(Jedis客户端的使用)

Redis集群的使用测试(Jedis客户端的使用)1、Jedis客户端建议升级到最新版(当前为2.7.3),这样对3.0.x集群有比较好的支持。https://github.com/xetorthio/jedishttp://mvnrepository.com/artifact/redis.clients/jedis2、直接在Java代码中链接Redis集群://数据库链接池配置Jed...

adovosr4302的博客 307

SpringBoot整合Redis(作为Cache缓存)+Lua,Redis实现Session共享

lua

usa_washington的博客 1192

SpringBoot整合redis

在配置文件application.properties中添加redis集群配置 redis集群配置 spring.redis.cluster.nodes=127.0.0.1:7000,127.0.0.1:7001,127.0.0.1:7002,127.0.0.1:7003,127.0.0.1:7004,127.0.0.1:7005 Redis服务器连接密码(默认为空) spring.redis.password= 连接池最大连接数(使用负值表示没有限制) spring.redis.pool.max-act

w7635122886的博客 498

SpringBoot系列教程之Redis集群环境配置

之前介绍的几篇redis的博文都是基于单机的redis基础上进行演示说明的,然而在实际的生产环境中,使用redis集群的可能性应该是大于单机版的redis的,那么集群的redis如何操作呢?它的配置和单机的有什么区别,又有什么需要注意的呢? 本篇将主要介绍SpringBoot项目整合redis集群,并针对这个过程中出现的问题进行说明,并给出相应的解决方案 I. 环境相关 首先需要安装redis集...

小灰灰blog的专栏 1432

spring整合redis集群遇到的问题及MyEclipse下Maven的安装配置

这几天一直在学习redis集群。然后准备用spring实现redis多机操作,不幸的是,遇到问题好几天都解决不了,一度想放弃,可是想想,遇到困难正是学习提高的时候,就决定换种方式去实现多机操作。现在我把遇到问题贴出来: application-context.xml &lt;beans xmlns="http://www.springframework.org/schema/beans" ...

学习的路上 309
上一篇: 使用aop,redis计数来控制单位时间内对某接口的访问量,防止刷验证码接口之类的
下一篇: 过滤器中使用spring容器注入bean
coder_daniu
博客等级 码龄8年 2粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值