`

用redis处理并发写的工作总结

 
阅读更多

     公司运营部那边需要做一个营销活动-springrain活动,上午和team leader、同一组的同事和产品经理一同听取并讨论了活动的需求,以及一些细节性的东西。

      大致需求是这样的,由于保密的原因,这里只列出大概的需求。就是每一个阶段都有一个浇水的滴数,达到这个浇水的滴数,app上的小数就成长一个阶段,以此类推。一共有5个阶段。

      后面我和同事就开始进行数据库表的相关设计,以及涉及到提供给app前端的接口方法。这是每一次做后端接口的必要的工作步骤。api的接口方法,我和另一个同事进行了不同的分工,每人写几个接口方法,同时进行自测并和前端人员进行联调。

      在设计到给树浇水的这个接口的时候,同事一开始是对于每一个浇水的人,都直接进行数据库操作,保存每一个会员的浇水记录,接口很快就写完并发布了。后续进行测试的时候,发现了问题。同事写了一个python的脚本进行多线程并发去测试该接口,出来的结果出人意料的出错了,有丢失更新的问题。或者说是并发导致了数据被覆盖了。所以,对于存在并发的这种操作,我们想到的方法就是加锁,或者同步。

     加锁,这种操作我们一般分为业务加锁和数据库层面的锁。数据库层面的锁我们可以用悲观锁也可以用乐观锁,但通常这种问题我们不会再数据库层面进行处理。所以这种解决方案我们就忽略到,有对悲观锁和乐观锁不明白的童鞋,请自行google。

   这里我们说一下业务层面的加锁也就是通常的同步操作,对于java层面的同步一般对于并发的性能支持的不好,如果并发量比较大,会造成排队甚至丢失连接的情况。所以这种方案对于我们也不可行。最后讨论的结果是使用基于生产者-消费者的模式解决并发问题,是并发从并发变为同步操作,从多线程变单线程。

这里我只写一下伪代码:

public void save(){

      //组织数据
     //将数据放入到队列,返回
     jedisClient.lpop(xxxx)
}

 

    然后启动一个后台线程池从队列中取出需要保存的数据对象,进行数据库操作。类型的伪代码如下:

ScheduledExecutorService executor = Executors.newFixedThreadPool(6);
executorService.execute(new Runnable() {
            @Override
            public void run() {
              //数据库操作
       
            }
}

 从而解决上面的问题,这里面的队列是redis内部实现的一个简单的队列

分享到:
评论

相关推荐

    leetcode题库-learn:redis缓存activiti工作流leetcode算法并发vueLinux内核MQ

    【Redis】目录下为使用Redis和阅读博客的一些总结 - 总结了缓存穿透、缓存雪崩、缓存击穿等问题的概念以及解决方法 【Spring】目录下为Spring Cloud一些总结 【vue】目录下为学习vue admin的总结以及代码 - 总结了...

    细细品味架构·分布式Redis解决方案Codis(第9期)

    2.4.4 并发控制 2.4.5 实验分析 2.4.6 相关工作 2.4.7 未来的工作 2.4.8 总结 2.5 Codis 集群部署实战 2.5.1 集群概要 2.5.2 系统架构 2.5.3 角色分配 2.5.4 部署安装 2.5.5 服务启动及初始化集群 2.5.6 codis-...

    2021互联网大厂Java架构师面试题突击视频教程

    28_你能说说redis的并发竞争问题该如何解决吗? 29_你们公司生产环境的redis集群的部署架构是什么样的? 30_分布式缓存相关面试题的回答技巧总结 31_体验一下面试官可能会对分布式系统发起的一串连环炮 32_为什么要...

    大数据分析及处理方法.docx

    比方,电商会使用传统的关系型数据库MySQL和Oracle等来存储每一笔事务数据,除此之外,Redis和MongoDB这样的NoSQL数据库也常用于数据的采集 在大数据的采集过程中,其主要特点和挑战是并发数高,因为同时有可能会有...

    java面试视频.part11.rar

    视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:GC相关 第8...

    java面试视频.part01.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part08.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part04.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part03.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part02.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part19.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part13.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part05.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part14.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part09.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part06.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part12.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part07.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part15.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

    java面试视频.part18.rar

    包含代码 视频总共压缩了19包,需要全部下载完才能解压 适合java求职找工作的小伙伴 第1章 课程导学 第2章 计算机网络面试核心 第3章 数据库 第4章 Redis第5章 Linux 第6章 Java底层知识:JVM 第7章 Java底层知识:...

Global site tag (gtag.js) - Google Analytics