Не делай jedis.disconnect()
. Это фактически закроет сокет, вызывая новое соединение в следующий раз. Используйте только jedis.close()
, это вернет соединение с пулом.
Когда вы вызываете INCR для несуществующего ключа, он создается автоматически, по умолчанию устанавливается на ноль, а затем увеличивается, в результате чего новый ключ с значение 1.
Это упрощает ваше if-else до простого jedis.incr("counter")
.
. При этом вы получаете:
jedis.select(Constants.REDIS_DATABASE_INDEX)
jedis.incr("counter")
Просмотрите, действительно ли вам нужен SELECT . Это для каждого соединения, и все соединения по умолчанию имеют значение DB 0. Если все рабочие нагрузки, совместно использующие один и тот же пул jedis, используют DB 0. Не нужно вызывать select.
Если вам нужны и select, и incr, тогда конвейер их:
Pipeline pipelined = jedis.pipelined()
pipelined.select(Constants.REDIS_DATABASE_INDEX)
pipelined.incr("counter")
pipelined.sync()
Это отправит две команды в одном сетевом сообщении, что повысит вашу производительность.