- 浏览: 56638 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (117)
- RPC相关 (4)
- mvc_controller (3)
- mvc_model (3)
- maven (4)
- mvc_view (5)
- IO (2)
- 业务相关 (2)
- MQ (7)
- 搜索引擎 (3)
- zookeeper (2)
- 工具相关 (4)
- 编辑错误 (1)
- tomcat (1)
- 单元测试 (1)
- 负载均衡 (1)
- ubuntu (1)
- nginx (1)
- dubbo (2)
- 网络站点分发 (1)
- 电商-支付相关 (10)
- 电商订单业务相关 (3)
- Core java1 (3)
- Core Java (12)
- 多线程高并发(并发包/线程/锁) (10)
- 数据库+缓存 (17)
- springcloud (2)
- jvm (5)
- 日志相关 (1)
- 算法 (3)
- spring (2)
- 分布式一致性算法 (1)
最新评论
1.查库存
2.秒杀减库存处理:
解决方案:令牌机制
秒杀100件商品,可设置令牌池120个。
redis放120令牌,用户获取令牌,获取到的取处理数据库库存(100个正常如理,20个处理失败,其他并发直接返回false),如果异常恢复令牌。
缺点:可以解决数据量少的秒杀,但是1万件商品如何处理?
疑问为什么时候用list,不使用incr/decr:
如果单纯计数效果一样,列表可以存储详细的信息,对业务灵活性高。
https://blog.csdn.net/zhiguozhu/article/details/50517527
3 spring boot redis
4.spring redis
RedisTemplate
public class IndexDatasourceRedis { public static void mainSelect(String[] args) { // 从主缓存获取 // 判断是否主缓存存在 if(true) { // lock锁 // 从数据库获取 // 更新主缓存 // 更新备份缓存 } else { // 备份缓存获取 } } public static void mainEdit(String[] args) { // 清空主缓存 } }
2.秒杀减库存处理:
解决方案:令牌机制
秒杀100件商品,可设置令牌池120个。
redis放120令牌,用户获取令牌,获取到的取处理数据库库存(100个正常如理,20个处理失败,其他并发直接返回false),如果异常恢复令牌。
// 库存放到缓存 for(i=0;i<120;i++){ redisTemplate.opsForList.rightPush("token_lists",i+"_"); } // 库件库存(获取令牌) String token = redisTemplect.opsForList.leftPop("token_lists"); if(token == null || "".equals(token)) { System.out.println("没有抢到令牌token,不能秒杀"); }
缺点:可以解决数据量少的秒杀,但是1万件商品如何处理?
疑问为什么时候用list,不使用incr/decr:
如果单纯计数效果一样,列表可以存储详细的信息,对业务灵活性高。
https://blog.csdn.net/zhiguozhu/article/details/50517527
3 spring boot redis
类加注解 @EnableCaching 方法加注解: //增 @CachePut(key="#id", value="value") //查 @Cacheable(key="#id", value="value") //删除 @CacheEvict(key="#id", value="value") spring配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> spring cache原理:注解 AOP注解的原理,看cachePut后通知,看Cacheable前通知 其实最后底层是JCache.jcp(java com) 思考:为什么后通知,先更新DB,后更新缓存 1.先更新DB,后删缓存: 正常思考:并发查询时,查出的是redis的旧值,产生了1次脏读,但减少对DB的冲击。 深度思考:此脏读是一时的旧数据,因随后会删redis,代价小,1次脏读。 2.先删缓存,后更新DB: 正常思考:并发查询时,因没有缓存,去数据库查询,对其冲击大。好处是可以查到最新的数据,但! 深度思考:但查到实际不是最新的数据,因为还没有更新DB,会把不是最新的数据会放到redis里,导致长时间脏读,概率大,代价大。
4.spring redis
RedisTemplate
发表评论
-
msql主从同步机制
2019-04-12 17:08 300DB主从分离:主服务 更新有线程记录mysq 的blog记录文 ... -
mysql原理分析(可用于培训)
2019-03-29 19:59 2831 ... -
redis主从同步/复制
2019-03-08 14:17 292redis主从是如何同步的 先说已经执行过首次同步(salvo ... -
数据库索引
2019-03-04 11:41 320参考:https://www.cnblogs.com/yelo ... -
数据库死锁&数据库锁知识点
2019-02-28 17:28 426参考:https://www.cnblogs.co ... -
redis被动缓存
2018-04-04 18:45 488package com.pingan.haofang.ag ... -
本地缓存类
2018-04-04 18:44 325package com.pingan.haofang.ag ... -
缓存集中形式
2018-03-31 17:11 3241.被动缓存 被动缓存: 当取service服务数据redis ... -
分布式事务
2018-01-25 20:37 919事务 原子性,事务要么全执行,要么全不执行。 一致性,事务开 ... -
数据库死锁
2017-12-26 11:35 304死锁(Deadlock) 所谓死 ... -
redis sentinel & cluster 原理分析
2017-03-20 17:03 370[img][/img]http://lib.csdn.net/ ... -
redis sentinel:使用Spring-data-redis操作Redis的Sentinel
2017-03-20 10:22 619redis整合spring(redisTemplate工具类) ... -
mysql服务端安装(centos)
2017-03-02 18:10 383http://jingyan.baidu.com/articl ... -
redis cluster:缓存数据库Redis集群搭建
2016-12-19 22:39 493http://www.redis.cn/topics/clus ... -
mysql服务端与客户端安装(windows)
2016-12-02 11:23 796一.服务端安装5.7版本(zip的方式) 1.下载zip文件 ... -
mysql性能优化与ORM分库分表
2016-12-01 21:08 1304http://www.cnblogs.com/gossip/ ...
相关推荐
Redis开发,Redis-集群监控之Redis monitor源码,NRedis-Proxy 是一个Redis中间件服务,第一个Java 版本开源Redis中间件,无须修改业务应用程序任何代码与配置,与业务解耦;以Spring为基础开发自定义标签,让它可...
这个类的实例需要被整个应用程序域共享和重用的,你不要在每个操作中不停的创建该对象的实例,所以使用单例来创建和存放这个对象是必须的。public static ConnectionMultiplexer Manager { get { if (_...
最近项目中需要用的redis,记得之前操作redis 的代码和自己订单业务混合在一起。维护是个问题,阅读也不利于。 还有严重的问题,有时候不想使用缓存服务了,还得每个方法里面判断下。为了在接下来的项目中能够方便...
案例目标 简单介绍 redis pipeline 的机制,结合一段实例说明pipeline 在提升吞吐量方面发生的效用。...优化过程 主要针对业务代码做的优化,其中redis 操作经过大量合并,最终降低到原来的1/5,而系统
基于注解使用,对业务代码可以说是零入侵,目前内置适配spring-cloud(Feign调用) , dubbo。 同时具备一定的扩展性与兼容性,因为存在自定义的服务框架,或者以后会涌现出更多的流行分布式服务框架,所以会提供...
而Lua脚本语言则提供了灵活的脚本执行能力,可以在应用程序中实现复杂的业务逻辑和计算任务。通过Spring Boot的集成,开发者可以轻松地使用Redis和Lua来构建高效、可扩展的应用程序,同时简化了开发和维护过程。使用...
在性能优化方面,PHP支持 opcode 缓存(如APC、OpCache)以加速脚本执行,可通过配置调整、代码优化、使用缓存技术等手段提升应用性能。近年来,PHP持续进行性能改进与新特性的引入,如PHP 7系列版本在速度上有了...
rains-redisproxyrains-redisproxy 是一个开源Redis中间件服务,支持redis协议通信,使用普通的redis客户端即可,无须修改业务应用程序任何代码与配置,与业务解耦;以netty 作为通信传输工具,让它具有高性能,高...
* 为了方便大学家习dubbo的运行机制,本框架将dubbo的provider和customer作了一个整合,将官方demo里的方多应用整合成了一个,即在同一应用内启动消费端和服务端 * 注:如有实际业务需要请将服务端与消费端分离,...
在很多互联网产品应用中,有些场景需要加锁处理,比如:秒杀,全局递增ID,楼层生成等等。大部分是解决方案基于DB实现的,Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并...
Java Web是一种使用Java技术来开发Web应用程序的技术框架。验证码生成逻辑 1、前端调用API接口,向后端发起一个[获取验证码]请求。 2、后端得到请求,创建验证码ID(通常利用UUID直接创建),然后以各种方式生成一...
资源简介:SSM Java 项目集合 ...通过这一系列SSM Java项目的下载和学习,您将能够深入了解SSM框架的核心技术,提升自己的编程能力,并在实际业务场景中灵活应用。我们期待您能够通过这些项目获得更多的成长和进步!
系统接口:根据业务代码自动生成相关的api接口文档。 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 在线接口文档:使用swager生成在线文档。 ActiveMQ队列:提供ActiveMQ队列,处理...
本资源包含一份基于Spring Boot开发的校园外卖服务系统的毕业论文及其对应的毕设源代码,旨在帮助读者深入了解Spring Boot框架在构建Web应用中的实践应用,并能够通过源代码学习如何进行二次开发定制,以适应不同的...
资源简介:SSM Java 项目集合 ...通过这一系列SSM Java项目的下载和学习,您将能够深入了解SSM框架的核心技术,提升自己的编程能力,并在实际业务场景中灵活应用。我们期待您能够通过这些项目获得更多的成长和进步!
系统接口:根据业务代码自动生成相关的api接口文档。 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 在线接口文档:使用swager生成在线文档。 ActiveMQ队列:提供ActiveMQ队列,处理...
5个目标文件 内容索引:Java源码,窗体界面,3DMenu Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。...
# snakerflow-spring-boot-starter ...3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
基于SpringBoot+Shiro+JWT+Redis+MongoDb+Mysql 进行实现的 主要包括 装修页面、商品管理、订单管理、活动管理、优惠券管理、权限管理等 MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB...