首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redis常用技术----事务

一、事务 Redis的事务是使用MULTI-EXEC的命令组合,使用它可以提供两个重要的保证: 事务是一个被隔离的操作,事务中的方法都会被Redis进行序列化并按顺序执行,事务在执行的过程中不会被其他客户端发生的命令所打断...在spring中要使用同一个连接操作Redis命令的场景,这时可以使用Spring提供的SessionCallback接口。...可以看到,key1的值为字符串,对他进行自增,事务执行时出现错误,但key1的值为value1,key2的值为空,这说明在命令格式正确但执行出错的情况下,其之前之后的命令都会正常执行。...Redis参考了多线程中使用的CAS(比较与交换)去执行的。CAS原理会产生ABA问题 ? 上面表格显示的就是ABA问题。 仅仅记录一个旧值去比较是不足够的,还要通过其他方法避免ABA问题。...常见的做法是加入一个version字段,每操作一次version就加1,这样通过version就知道该字段有没有被修改过。

44620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    @Value竟然能玩出这么多花样

    《聊聊spring事务失效的12种场景,太坑了》《惊呆了,spring中竟然有12种定义bean的方法》中已经介绍过了,在这里就不过多讲解了。...@Value可以注入:成员变量、常量、方法、静态方法获取到的值,到相应的成员变量中。...一下子有没有豁然开朗的感觉,有了这些,我们可以通过@Value注解,实现更多的功能了,不仅仅限于注入系统属性。...7.4 逻辑运算 通过上面介绍的内容,我们可以获取到绝大多数类的变量和方法的值了。但有了这些值,还不够,我们能不能在EL表达式中加点逻辑?...8.2 #{} 主要用于通过spring的EL表达式,获取bean的属性,或者调用bean的某个方法。还有调用类的静态常量和静态方法。

    34600

    三万字盘点Spring最最核心的9大核心功能

    Value来举例子,当我们通过@Value注解的方式将配置注入到字段时,大致步骤如下图所示: 取出@Value配置的key 根据@Value配置的key调用Environment的resolvePlaceholders...(String text)方法,解析占位符,找到配置文件中对应的值 调用PropertyEditor将对应的值转换成注入的属性字段类型,比如注入的字段类型是数字,那么就会将字符串转换成数字 在转换的过程中...,Spring会先调用PropertyEditor的setAsText方法将字符串传入,然后再调用getValue方法获取转换后的值。...不知道你有没有注意过,平时写接口的时候,前端传来的参数String类型的时间字符串无法通过Spring框架本身转换成Date类型,有部分原因就是前面提到的Spring没有相关的Converter实现 总的来说...> constructor, int parameterIndex):获取构造方法某个构造参数对应的ResolvableType 通过上面解释可以看出,对于一个类方法参数,方法返回值,字段等等都可以获取到对应的

    33910

    三万字盘点Spring 9大核心基础功能

    Value来举例子,当我们通过@Value注解的方式将配置注入到字段时,大致步骤如下图所示: 取出@Value配置的key 根据@Value配置的key调用Environment的resolvePlaceholders...(String text)方法,解析占位符,找到配置文件中对应的值 调用PropertyEditor将对应的值转换成注入的属性字段类型,比如注入的字段类型是数字,那么就会将字符串转换成数字 在转换的过程中...,Spring会先调用PropertyEditor的setAsText方法将字符串传入,然后再调用getValue方法获取转换后的值。...不知道你有没有注意过,平时写接口的时候,前端传来的参数String类型的时间字符串无法通过Spring框架本身转换成Date类型,有部分原因就是前面提到的Spring没有相关的Converter实现 总的来说...> constructor, int parameterIndex):获取构造方法某个构造参数对应的ResolvableType 通过上面解释可以看出,对于一个类方法参数,方法返回值,字段等等都可以获取到对应的

    39930

    @Value竟然能玩出这么多花样

    7.2 bean的变量和方法 通过EL表达式,@Value注解已经可以注入bean了。既然能够拿到bean实例,接下来,可以再进一步。...@Value可以注入:成员变量、常量、方法、静态方法获取到的值,到相应的成员变量中。...一下子有没有豁然开朗的感觉,有了这些,我们可以通过@Value注解,实现更多的功能了,不仅仅限于注入系统属性。...7.4 逻辑运算 通过上面介绍的内容,我们可以获取到绝大多数类的变量和方法的值了。但有了这些值,还不够,我们能不能在EL表达式中加点逻辑?...8.2 #{} 主要用于通过spring的EL表达式,获取bean的属性,或者调用bean的某个方法。还有调用类的静态常量和静态方法。

    1.1K12

    SpringBoot中读取配置的七种方法总结

    使用@Value注解 @Value注解是最直接且常用的读取配置的方式。它可以将配置文件中的属性值注入到Spring管理的Bean的字段中。...的形式添加默认值 只能用于被Spring管理的Bean中使用,或Java配置@Configuration类 可以用于字段、构造函数参数、方法参数和方法上。...例如,配置文件中的student.name会自动映射到类字段name上。 如果配置文件中的属性名与类字段名不一致,可以使用@Value注解或通过setter方法来指定映射关系。...支持类型转换: @ConfigurationProperties支持自动类型转换,能够将配置文件中的字符串值转换为目标字段的类型。例如,将字符串转换为整数、布尔值等。...使用config的方法 } 6. 使用命令行参数 Spring Boot应用也支持通过命令行参数来传递配置信息。可以通过实现CommandLineRunner接口来访问命令行参数。

    26910

    Java最新简答题

    区别1: get重点在从服务器上获取资源,post重点在向服务器发送数据; 区别2: get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"...name=admin&password=admin,这个过程用户是可见的; post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的; 区别3:...较get安全性较高; 区别5: get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。...是二进制安全的,最大能存储 512MB。 Hash,散列,是一个键值(key=>value)对集合。string 类型的 field 和 value 的映射表,特别适合用于存储对象。...@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。

    70420

    SpringBoot+Spring常用注解总结

    设置字段类型 8.4. 指定不持久化特定字段 8.5. 声明大字段 8.6. 创建枚举类型的字段 8.7. 增加审计功能 8.8. 删除/修改数据 8.9. 关联关系 9....处理常见的 HTTP 请求类型 5 种常见的请求类型: GET :请求从服务器获取特定资源。举个例子:GET /users(获取所有学生) POST :在服务器上创建一个新的资源。...卡洛·罗韦利用诗意的文字,邀请我们思考这一亘古难题——时间的本质。 - name: 了不起的我 description: 如何养成一个新习惯?如何让心智变得更成熟?...如下图所示(通过 idea 插件—Maven Helper 生成): 注:如果版本中的 spring-boot-starter-web 依赖中没有 hibernate-validator 包(如2.3.11...一些常用的字段验证的注解 @NotEmpty 被注释的字符串的不能为 null 也不能为空 @NotBlank 被注释的字符串非 null,并且必须包含一个非空白字符 @Null 被注释的元素必须为 null

    94520

    接近8000字的SpringSpringBoot常用注解总结!安排!

    处理常见的 HTTP 请求类型 5 种常见的请求类型: GET :请求从服务器获取特定资源。举个例子:GET /users(获取所有学生) POST :在服务器上创建一个新的资源。...系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。...卡洛·罗韦利用诗意的文字,邀请我们思考这一亘古难题——时间的本质。 - name: 了不起的我 description: 如何养成一个新习惯?如何让心智变得更成熟?...一些常用的字段验证的注解 @NotEmpty 被注释的字符串的不能为 null 也不能为空 @NotBlank 被注释的字符串非 null,并且必须包含一个非空白字符 @Null 被注释的元素必须为 null...创建枚举类型的字段 可以使用枚举类型的字段,不过枚举字段要用@Enumerated注解修饰。

    2.1K21

    SpringBoot中MongoDB的那些骚操作

    ‍️ SpringBoot中MongoDB的高级用法不知道大家在工作项目中有没有使用MongoDB,在哪些场景中使用。...userId;// 将userId字段作为主键, 存储到Mongodb中的字段名为_id@Field:该注解用于指定Document中字段的名称,默认情况下,Spring会将Java对象的字段的名作为...但是需要注意的是,MongoTemplate中提供的触发方法只有7个,如果执行的是aggregate,bulk等操作,无法通过监听器来记录最终执行的操作语句。...) 方法中进行的,默认的行为是从查询到的Document中获取_class 字段的值,然后和find(Query query, Class entityClass) 中的entityClass...>) null);}}所以为了避免普通的字符串被转为ObjectId,我们需要重写convertId方法。

    36310

    深入解析Spring EL表达式:概念、特性与应用

    Spring EL允许开发者通过表达式将数据装配到属性或构造函数中,调用JDK中提供的静态常量,获取外部Properties文件中的配置,甚至可以对不同Bean的字段进行计算再进行赋值。...强大的功能:Spring EL支持各种操作符和函数,包括算术、逻辑、关系、条件、集合和字符串操作等。...函数用于获取类类型,然后你可以调用其静态方法。...自定义函数通过实现特定的接口或使用Spring的@Value和MethodInvokingFactoryBean来定义。 一旦注册了自定义函数,你就可以在EL表达式中像调用内置函数一样调用它们。...模板文字 在某些情况下,你可能希望在EL表达式中使用模板文字,这些模板文字允许你插入表达式的值。

    3.1K11

    sql2java-excel(二):基于apache poi实现数据库表的导出的spring web支持

    AOP方式导出Excel也支持Web端通过请求参数控制Excel的输出格式,这种方式要求服务方法定义与@ExcelSheet注解中对应的方法名同名的参数,切面执行时会自动将这些参数注入到@ExcelSheet...请求参数定义的顺序也没有要求,但参数名必须与@ExcelSheet中对应的方法名一致才有效,类型也必须一致,对于枚举类型的参数,类型为String,切面执行时会自动将枚举变量名字符串转为枚举类型变量。...的Spring AOP(切面)实现提供了在服务方法指定原始数据类型的机制,以允许服务方法通知切面执行时原始的数据类型是什么,这样切面执行时就可以从原始的数据类型中获取原数据类型中@ExcelColumn...#setBeanClass 方法告诉 ExcelHelperAround对象数据记录的原始的数据类型, * 这样ExcelHelperAround就可以通过该类型获取 JSON 字段的Excel配置参数...,此字段用于给前端提供默认的输出字段及顺序 getParameterArgName getParameter Spring Controller 服务方法中获取excel导出参数的开关参数名 exportFileNameArgName

    1.6K40

    SpringBoot中MongoDB的那些高级用法

    但是需要注意的是,MongoTemplate中提供的触发方法只有7个,如果执行的是aggregate,bulk等操作,无法通过监听器来记录最终执行的操作语句。...) 方法中进行的,默认的行为是从查询到的Document中获取_class 字段的值,然后和find(Query query, Class entityClass) 中的entityClass...自定义_id转换器这是一个坑,假如User这个Collection中,使用userId作为_id 字段的值,这是一个字符串。...会使用ObjectId对象作为_id 的值,但是因为MongoDB中_id 字段的类型是普通的字符串,并非是ObjectId,所以就会出现查询不到的情况。...>) null);}}所以为了避免普通的字符串被转为ObjectId,我们需要重写convertId方法。

    12010

    别瞎写工具类了,Spring自带的不香吗?

    有没有统一的封装呢? 其实Spring给我们提供了Assert类,它表示断言。 1.1 断言参数是否为空 断言参数是否空,如果不满足条件,则直接抛异常。...其实Spring提供了工具类StringUtils,对JDK中一些字符串的操作进行了扩展。 2.1 判空 StringUtils类其实有个isEmpty()方法判断,不过已经被废弃了。...6.1 拷贝对象的属性 曾几何时,你有没有这样的需求:把某个对象中的所有属性,都拷贝到另外一个对象中。这时就能使用BeanUtils的copyProperties方法。...7.1 获取方法 如果你想获取某个类的某个方法,可以使用ReflectionUtils类的findMethod方法。...例如: Method method = ReflectionUtils.findMethod(User.class, "getId"); 7.2 获取字段 如果你想获取某个类的某个字段,可以使用ReflectionUtils

    30611
    领券