这可能与您的 redis 服务器配置有关。
您可以从主机上的 redis cli 运行 MONITOR。
通常您通过 cli 连接,例如:
https://redis.io/topics/rediscli https://redis.io/topics/rediscli
redis-cli -h <your server ip> -p <your server port> -a <if you have a server password enabled>
$ redis-cli -h host -p port -a password
默认端口为 6379
这将显示与 redis 服务器的所有交互,但是不要运行它,因为总是运行它会降低性能,但非常适合故障排除。
https://redis.io/commands/monitor https://redis.io/commands/monitor
$ redis> monitor
1339518083.107412 [0 127.0.0.1:60866] "keys" "*"
1339518087.877697 [0 127.0.0.1:60866] "dbsize"
1339518090.420270 [0 127.0.0.1:60866] "set" "x" "6"
1339518096.506257 [0 127.0.0.1:60866]
这应该可以告诉您问题所在。
您还可以从 redis cli 运行 INFO 命令来查看服务器统计信息和内存使用情况等信息。
https://redis.io/commands/info https://redis.io/commands/info
redis> INFO
# Server
redis_version 999.999.999
redis_git_sha1:3c968ff0
redis_git_dirty:0
redis_build_id:51089de051945df4
redis_mode:standalone
os:Linux 4.8.0-1-amd64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:6.3.0
process_id:8394
</snip>
还要在代码中使用 Redis 客户端的 INCRBY 命令,否则需要在设置计数值之前增加计数值,这与异步模式不一致。
https://redis.io/commands/incrby https://redis.io/commands/incrby
我认为你的问题是因为这是异步的,对吧?
因此,计数在发布时不同步,因为有些计数可能会先于其他计数等待。
无论哪种方式,您可能都想尝试将它们同步发布,看看这是否会产生影响,然后您就知道这就是问题所在,并且最好使用 redis INCR 命令来实现此目的。