
redis
文章平均质量分 85
雪中鱼01
所谓专家,就是在一个很小的领域里把所有的错误都犯过了的人
展开
-
多用户并发操作的解决方案,同步锁的具体实施方法
一:并发操作出现的原因原因:多个动作在一瞬间同时操作同一数据现象:多人在某一瞬间通过相同的方式操作同一条数据 多人在某一瞬间通过不同的方式操作同一条数据 在某一瞬间,同一动作,多次执行二:并发举例及解决办法针对上述的三种的情况,分别以实际情况进行举例。【多人在某一瞬间通过相同的方式操作同一条数据】1.某仓库系统有一品牌商品A,商品A在数据库中只允许存在一条记录,库存的数量是这条数据的一个字段,现有库存100件,在某一天到货了1000件。由于数量比较大,现在需要10名操作员去原创 2022-02-03 20:59:09 · 7023 阅读 · 0 评论 -
验证码生成 EasyCaptcha
验证码生成 EasyCaptchaJavaWeb图形验证码,支持gif验证码,可用于基于的session的web项目和前后端分离的项目。源码地址:https://gitee.com/jeesys/EasyCaptcha/一、引入依赖引入EasyCaptcha<dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifac.原创 2021-11-15 13:33:10 · 1276 阅读 · 0 评论 -
redis高并发分布式锁实战
分布式锁 setnx如果key存在问题1: 抛异常 释放分布式锁finally解决死锁问题2:宕机了设置过期时间问题3:永久失效加线程id问题4 :超时时间不够redisson内部使用lua脚本语言redisson用了很多lua脚本来解决lockwatchdoytimeoutredlock实现原理redisson并行改为串行 再优化一下分段加锁...原创 2020-12-13 18:04:27 · 280 阅读 · 0 评论 -
Spring 中运用的 9 种设计模式
1. 简单工厂实现方式:BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。实质:由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。实现原理:bean容器的启动阶段: 读取bean的xml配置文件,将bean元素分...原创 2020-03-23 22:28:39 · 346 阅读 · 0 评论 -
面试问题之redis缓存穿透,缓存击穿,缓存雪崩解决方案分析
怎么预防redis的缓存击穿缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用...原创 2020-03-20 09:32:04 · 623 阅读 · 1 评论 -
面试套路问题总结
1.stringbuffer和stringbuilder的区别 StringBuffer 和 StringBuilder 的 有3 个区别区别1:线程安全StringBuffer:线程安全,StringBuilder:线程不安全。因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 StringBuilder ...原创 2020-03-05 17:21:16 · 789 阅读 · 1 评论 -
解决bitmap做每日统计,offset偏移量过大,导致内存占用过大的问题思路
需求:使用redis的bitmap做每日统计解决思路:使用每天的第一个id作为被减量,这样每天的offset(偏移量)就从1开始,大幅有效的缩减了内存的占用量!//bitmap的偏移量offset生产,offset越大,占用内存越多,所以以每日第一个id作为minid,作为被减数//使用guava cache缓存机制获取最小id,设置过期时间为每一天,每天清空一次private Lo...原创 2020-03-10 15:20:50 · 4858 阅读 · 4 评论 -
仿微博社交平台系统设计[四]--使用springevent事件驱动模型(观察者模式)结合redis bitmap 运用 实现每日数据统计
观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知。如何解决:使用面向对象技...原创 2020-03-04 16:18:24 · 417 阅读 · 0 评论 -
仿微博社交平台系统设计[三]--使用redis的zset存储好友关系的实现
redis的相关命令:ZADD key score1 member1 [score2 member2]redisTemplate的相关api:redisTemplate.opsForZSet().add(K key, V value, double score)具体java代码的实现:/** * @param uid 用户id * @param r...原创 2020-02-18 20:17:24 · 841 阅读 · 0 评论 -
LoadingCache简单实例,使用google缓存机制缓存每天数据库第一条数据并保存
使用LoadingCache缓存每天数据库第一条数据并保存 private LoadingCache<String, Integer> minId = CacheBuilder.newBuilder().expireAfterWrite(1L, TimeUnit.DAYS).build(new CacheLoader<String, Integer>() { @O...原创 2020-01-15 17:22:54 · 506 阅读 · 0 评论 -
Springboot 注解 @Cacheable自定义单个key设置expire超时时间 并在配置文件里配置
Springboot RedisCacheManager 类的配置 指定key的过期时间 并在配置文件里配置目的&效果在springBoot中配置了RedisCache,当使用@Cacheable注解时,默认为redisCache,通过在配置文件里设置不同key的过期时间,达到可自定义key过期时间的效果。方案step 1新建一个Map类,用于存放要设置的key...原创 2019-12-30 16:59:10 · 7685 阅读 · 0 评论