Я реализую своего рода буфер записи / хранения в библиотеке с поддержкой Redis, чтобы объединить несколько вызовов hincrby
в один вызов.Буфер должен быть полностью атомарным и работать в нескольких потоках.
Я совершенно новичок в области безопасности потоков, поэтому;Существуют ли какие-либо существующие библиотеки или стандартизированные способы реализации глобального буфера / очереди на основе хэша, который прекрасно работает в многопоточных средах?
Например, хэш буфера будет работать примерно так: псевдокод:
buffer #=> { :ident1 => { :value_a => 1, :value_b => 4 },
# :ident2 => { :value_a => 2, :value_b => 3 } }
buffer[:ident1][:value_a] #=> 1
# saving merges and increments {:value_a => 2} into buffer[:ident1]
save(:ident1, {:value_a => 2})
buffer[:ident1][:value_a] #=> 3
Идея состоит в том, что после X числа save
вызов буфера сбрасывается путем вызова save
с каждым элементом из буфера.