taoensso / carmine

Redis client + message queue for Clojure
https://www.taoensso.com/carmine
Eclipse Public License 1.0
1.15k stars 130 forks source link

Support for different serialization formats #184

Closed whilo closed 7 years ago

whilo commented 7 years ago

Hi,

thanks for your great work! I have implemented a first sketch of a carmine backend for konserve, but I need flexible serialization and deserialization (I have added comments from the filestore backend for serialization).

I can serialize and deserialize a bytearray coming from carmine as a workaround, but that means doing serialization again with nippy in carmine (bad solution). In carmine/protocol.clj there is a TODO for flexible serialization. I would propose to expose a dynamic binding for the parse and thaw routines or to use incognito and expose the serializer instance through a binding. I would add nippy support for your needs then. Carmine would automatically gain support for other serializations like fressian and transit then.

I can also try to implement it myself, but I am not totally sure where I should expose the binding, as there are some defalias things and you have possibly some implicit dependencies on nippy as a serialization.

Best, Christian

ptaoussanis commented 7 years ago

Hey Christian,

Haven't had a chance to look over this properly- but just wanted to throw out in case you weren't aware that Carmine supports raw arguments using raw on writes, and parse-raw on reads.

With these, you can use your own arbitrary de/serialization mechanism w/o going through Nippy.

Let me know if that's what you're looking for? Otherwise will try take a closer look at this issue next week.

Cheers, and good luck with the libs!

whilo commented 7 years ago

Thanks that worked :).