I'm trying to improve my application performance and want to get ride of unnecessary requests to database. I have couple of counters that I can allow to be stored temporary. Currently, my implementation works well but can't be scaled, that is why I need another solution.
So to the problem: 1. I receive requests with JSON data from which I create ID for redis like "prefix:USA:123122" 2. Instead of going to that key in Redis, I want to go straight to shared memory and increment the value. To do it, I need to know the position. I do md5 hashing to that key, which gives me in that case 569b6f34b5275a30c7b69a6be69cb306 3. Take first 7 characters of that md5 and convert it to decimal which gives me 90814195 4. I do uwsgi.sharedarea_inc32(0, 90814195) 5. And where I need to know the value I do uwsgi.sharedarea_read32(0, 90814195) The problem is that first seven characters is not enough, I start to see duplicate first seven characters of md5 on different keys but I can't give more memory to shared area and use 8 chars. So I thought is there a way to create a simple key value db inside shared area, read it on every request, update the counter and put it back. Something like pickle python dictionary to shared memory and fill other space with zeros. The problem with such approach is that increments are not atomic. Is uWSGI already provide something to solve my problem?
_______________________________________________ uWSGI mailing list [email protected] http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi
