当并发具有不同的值时,Redis incrby和incrbyfloat

时间:2018-11-27 03:04:32

标签: java multithreading concurrency redis

在使用redis命令incrBy和incrByFloat时发现问题。 当我使用使用300000个线程的incrBy命令将1加到找到的密钥中时 结果总是300000

for (int i = 0; i < 30; i++) {
        new Thread() {
            @Override
            public void run() {
                for (int j = 0; j < 10000; j++) {
                    redisClient.incrBy(SHARE_POOL_KEY, 1);
                }
            }
        }.start();
    }

incrby result

但是当我使用incrbyFloat时,结果是不同的,

for (int i = 0; i < 30; i++) {
        new Thread() {
            @Override
            public void run() {
                for (int j = 0; j < 10000; j++) {
                    redisClient.incrByFloat(SHARE_POOL_KEY, 1);
                }
            }
        }.start();
    }

incrybyFloat result

那为什么会发生这种情况?

0 个答案:

没有答案