From 30639cae72f154e1a12101e4f8fb8c7e086d2376 Mon Sep 17 00:00:00 2001 From: Nick Elser Date: Sun, 12 Apr 2015 15:28:53 -0700 Subject: [PATCH] use msgpack for efficiency --- lib/suo/client/base.rb | 11 ++++++----- lib/suo/clients.rb | 2 ++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/suo/client/base.rb b/lib/suo/client/base.rb index 99db651..c5cef55 100644 --- a/lib/suo/client/base.rb +++ b/lib/suo/client/base.rb @@ -82,14 +82,15 @@ module Suo private def serialize_locks(locks) - locks.map { |time, token| [time.to_f, token].join(":") }.join(",") + MessagePack.pack(locks.map { |time, token| [time.to_f, token] }) end - def deserialize_locks(str) - str.split(",").map do |s| - time, token = s.split(":", 2) - [Time.at(time.to_f), token] + def deserialize_locks(val) + MessagePack.unpack(val).map do |time, token| + [Time.at(time), token] end + rescue EOFError => _ + [] end def clear_expired_locks(locks, options) diff --git a/lib/suo/clients.rb b/lib/suo/clients.rb index 5d8ba46..c9e741a 100644 --- a/lib/suo/clients.rb +++ b/lib/suo/clients.rb @@ -6,6 +6,8 @@ require "dalli/cas/client" require "redis" +require "msgpack" + require "suo/client/errors" require "suo/client/base" require "suo/client/memcached"