I am using Apache Usergrid for a project. However I have a serious problem with its counters. It may take to 30 seconds for a counter to be updated. So I want to use something other than usergrid counters. My question is:
Is there a structure for redis, postgresql or memcached that I will be able to use hierarchical counters. Or is there any other tool for that purpose?
Thank you all.
There's no such counter in Redis, but you can implement one with lua script.
Hierarchical Counter
Each time you increment a counter with the name of "first.second.third", it automatically increments 3 counters: "first.second.third", "first.second", and "first".
hierarchical counter lua scripts: hc.lua
local key = KEYS[1]
while key do
redis.call("incrby", key, ARGV[1])
key = string.match(key, "(.+)%.")
end
Try it with redis-cli:
./redis-cli --eval hc.lua first.second.third , 2
(nil)
./redis-cli mget first first.second first.second.third
1) "2"
2) "2"
3) "2"