zoukankan      html  css  js  c++  java
  • 对账

    通常我们做过支付交易等软件开发时,通常为了防止财务上面的差错,会对账来发现是否存在账务问题,通常是把我们平台的数据与第三方(如支付宝的交易流水)进行对比找出差异的地方。

    对账的演化:

    阶段一:

    人工对账,效率慢,可能还容易出错

    阶段二:

    软件系统对账,遍历自己平台的数据和第三方平台的数据进行对比,效率还是不高,不易扩展。

    方法三:

    用Redis的Set类型的差集功能得出差异数据,适用分布式系统中,C#代码的demo如下:

            [HttpGet]

            [Route("ReconciliationRedis")]

            public bool ReconciliationRedis()

            {

                var redisDataKeyA = $"Reconciliation:A";

                var redisDataKeyB = $"Reconciliation:B";

                var csredis = new CSRedisClient("localhost");//链接Redis地址,这里默认本地地址

                RedisHelper.Initialization(csredis);

                if (RedisHelper.Exists(redisDataKeyA))

                    RedisHelper.Del(redisDataKeyA);

                if (RedisHelper.Exists(redisDataKeyB))

                    RedisHelper.Del(redisDataKeyB);

                //造数据集合A

                for(int i = 0; i < 5; i++)

                {

                    RedisHelper.SAdd(redisDataKeyA, i);

                }

                

                //造数据集合B

                for (int i = 2; i < 7; i++)

                {

                    RedisHelper.SAdd(redisDataKeyB, i);

                }

                //找出存在于数据集A,却不存在数据集合B的数据

                var diffListA = RedisHelper.SDiff(redisDataKeyA, redisDataKeyB);

                //找出存在于数据集B,却不存在数据集合A的数据

                var diffListB = RedisHelper.SDiff(redisDataKeyB, redisDataKeyA);

                return true;

            }

    阶段四:

    可以引入MQ进行异步对账,起到解耦、异步的作用

    更多分享请关注我的公众号

  • 相关阅读:
    ios入门笔记(创建隐式首选项,实现系统设置,实现文件系统存储)
    ios开发(表视图)
    Android上使用OpenglES2.0遇到的一点问题
    Android平台对H264视频硬解码
    Java GC机制和对象Finalize方法的一点总结
    JVM GC之一找出不可达对象并回收
    docker 使用Data Volume 共享文件
    sscanf函数用法详解
    va_start和va_end使用详解
    NDK 的helloworld步奏
  • 原文地址:https://www.cnblogs.com/wangoublog/p/15335543.html
Copyright © 2011-2022 走看看