Как увеличить счетчик в Кассандре?

Я бы хотел использовать Кассандру для хранения счетчика. Например, сколько раз данная страница была просмотрена. Счетчик никогда не уменьшится. Значение счетчика не обязательно должно быть точным, но оно должно быть точным со временем.

Моей первой мыслью было сохранить значение в виде столбца и просто прочитать текущий счетчик, увеличить его на единицу, а затем вернуть обратно в Однако, если другая операция также пытается увеличить счетчик, я думаю, что окончательным значением будет просто значение с последней отметкой времени.

Еще одна мысль - сохранить загрузку каждой страницы в виде нового столбца в CF. Тогда я мог бы просто запустить get_count () для этого ключа и получить количество столбцов. Читая документацию , кажется, что это не очень эффективная операция вообще. end foo () {ставит "один"} {ставит "два"}

Что-то вроде:

def foo(&b1, &b2)
  b1.call
  b2.call
end

foo() { puts "one" } { puts "two" }

7
задан rui 24 August 2010 в 16:50
поделиться

2 ответа

Вы не можете передать несколько блоков таким способом, но вы можете передать несколько объектов proc или лямбда:

irb(main):005:0> def foo(b1, b2)
irb(main):006:1>   b1.call
irb(main):007:1>   b2.call
irb(main):008:1> end
=> nil
irb(main):009:0> foo(Proc.new {puts 'one'}, Proc.new {puts 'two'})
one
two
=> nil
irb(main):010:0>
13
ответ дан 6 December 2019 в 15:16
поделиться

синтаксис в Ruby 1.9 намного симпатичнее:

foo ->{puts :one}, ->{puts :two}
1
ответ дан 6 December 2019 в 15:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: