> pic use memcache as a RAM memory
> first i lock memcache (with my today lock function)
> set a key to 0
> i read data from pic, and put at memcache
> after 128 writes i put a sum (save this sum at pic internal memory)
> total bytes is about 1MB(1048576 bytes) (pic don't have this memory,
> it's a ADC read 2Bytes/read)
> after all 1MB sent, i check all sums with my internal memory, to make
> sure some data wasn't lost
> if lost, i start a new lock
> set a key to 1
> after it, i unlock memcache (my today unlock function)
> wait just some minutes
> if get set isn't 2 return to first lock
> if 2 continue with another function inside pic program
>
> after key=1 my server (another app), process and set key to 2  if ok
> i'm using memcache as a key-value and as a server-client protocol
> ok it's not fast, but it's work
> the other implementation use a server side, and a ARM client side
> server don't use more memcache, ARM doesn't use it too, i'm using
> mysql at ARM side and tcp/ip socket to contact my app about new data
> (it's faster than a table update in mysql)

Ah okay, this is actually perfect for gearmand, but I don't think you'll
have much fun writing your own client for it.

If you would go for gearmand, you would:

- send open packet to gearmand
- write/sum your data
- bail the connection if you get an error and try again
- if all data sent, all is good
- you can either use async job, or sync job and wait for a worker process
on the server to pick up the job and read it
^ but as I said writing a gearmand client and figuring out how to write a
worker is more work.

in your case, perhaps you could consider using a key prefix for your PIC
army?

The dumbest/quickest thing I can think of:

- assign each PIC a unique client id number
- make sure the server knows the list of ids
- each PIC will write to keys named: "key_IDNUMBER" (ie if the PIC's ID is
5, it writes to "key_5"
- the server issues a large multiget to memcached asking for all of the
PIC ids, and processes any that it gets back (get key_1 key_2 key_3 etc)

Then there's no locking, and multiple PIC's can use memcached in parallel?
That sounds like a win/win to me, if gross :)

-Dormando

Reply via email to