Essa é uma corrida típica. Ele verifica se a chave inserida existe; se não, ele faz uma inserção, mas outra pessoa pode inserir a chave entre a contagem e a inserção. As transações não impedem isso.
O código parece esperar isso e tentar lidar com isso, mas quando olhei para o código para lidar com esse caso, pude ver imediatamente que ele estava quebrado. Relatado aqui:http://code.djangoproject.com/ticket/11569
Eu recomendo fortemente aderir ao back-end do memcache.