Functions include a Key Value Store (kvstore) with many builtin functions. Using the incrCounter function provides robust, distributed computing safe technique to keep an accurate count of any event: candidate or ballot votes, client or server analytics, or any metric that has to have an accurate counting metric from a distributed set of contributing endpoints (voters from many devices, for example).
Imagine if you were to do this in a traditional database. You might get a web request to count a vote. You would have to get the current count value from your database (locking that record - and therefore blocking other vote requests) increment the count, write the incremented value back to the database (and do this in a globally distributed environment - aka, multiple database instances). In other words, if 1000 voters all voted for the same performer within a small time window (lets say < .25 seconds), and all these voters are distributed around the globe. How would you implement this functionality in way that one vote increment doesn't overwrite other votes increments happening at the same time and then sync all the votes from multiple database instances located in different data centers around the world? The incrCounter will do all this for you, asynchronously, and accurately without overwriting other vote increments.
For more details, see the Functions documentation on KV Store incrCoutner function.