Skip to content

Commit

Permalink
feature(unique_values_list): rename Standard and Fast unique values l…
Browse files Browse the repository at this point in the history
…ist to Blocking and NonBlocking respectively
  • Loading branch information
Napolskih committed Oct 17, 2014
1 parent 7521fd8 commit cccc2be
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 15 deletions.
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ redis:
{:company_id => 2, :city_id=>"10", :value=>4}
```

## RedisCounters::UniqueValuesLists::Standard
## RedisCounters::UniqueValuesLists::Blocking

Список уникальных значений, с возможностью кластеризации и партиционирования значений.

Expand All @@ -162,7 +162,7 @@ redis:

Простой список уникальных пользователей.
```ruby
counter = RedisCounters::UniqueValuesLists::Standard.new(redis, {
counter = RedisCounters::UniqueValuesLists::Blocking.new(redis, {
:counter_name => :users,
:value_keys => [:user_id]
})
Expand All @@ -177,7 +177,7 @@ redis:

Список уникальных пользователей, посетивших компаниию, за месяц, кластеризованный по суткам.
```ruby
counter = RedisCounters::UniqueValuesLists::Standard.new(redis, {
counter = RedisCounters::UniqueValuesLists::Blocking.new(redis, {
:counter_name => :company_users_by_month,
:value_keys => [:company_id, :user_id],
:cluster_keys => [:start_month_date],
Expand All @@ -199,14 +199,14 @@ redis:
company_users_by_month:2013-09-01:2013-09-05 = ['1:22']
```

## RedisCounters::UniqueValuesLists::Fast
## RedisCounters::UniqueValuesLists::NonBlocking

Быстрый список уникальных значений, с возможностью кластеризации и партиционирования значений.

Скорость работы достигается за счет следующих особенностей:
- Использует 2х объема памяти для хранения элементов,
при использовании партиционирования.
Eсли партиционирование не используется, то расход памяти такой-же как у UniqueValuesLists::Standard.
Eсли партиционирование не используется, то расход памяти такой-же как у UniqueValuesLists::Blocking.
- Не транзакционен - сторонний блок, выполняемый после добавления уникального элемента,
выполняется за пределами транзакции, в которой добавляется уникальный элемент.
- Не ведется список партиций.
Expand All @@ -233,7 +233,7 @@ counter = RedisCounters::UniqueHashCounter.new(redis, {
:group_keys => [:company_id],
:partition_keys => [:date],
:unique_list => {
:list_class => RedisCounters::UniqueValuesLists::Standard
:list_class => RedisCounters::UniqueValuesLists::Blocking
:value_keys => [:company_id, :user_id],
:cluster_keys => [:start_month_date],
:partition_keys => [:date]
Expand Down
4 changes: 2 additions & 2 deletions lib/redis_counters.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
require 'redis_counters/hash_counter'
require 'redis_counters/unique_hash_counter'
require 'redis_counters/unique_values_lists/base'
require 'redis_counters/unique_values_lists/standard'
require 'redis_counters/unique_values_lists/fast'
require 'redis_counters/unique_values_lists/blocking'
require 'redis_counters/unique_values_lists/non_blocking'

require 'active_support/core_ext'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ module UniqueValuesLists
# * Ведет список партиций;
# * Полностью транзакционен.

class Standard < Base
class Blocking < Base
PARTITIONS_LIST_POSTFIX = :partitions

# Public: Нетранзакционно удаляет данные конкретной конечной партиции.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ module UniqueValuesLists
# или воспользоваться методами delete_all! или delete_all_direct!,
# для удаления всех партиций кластера включая основную.

class Fast < UniqueValuesLists::Base
class NonBlocking < UniqueValuesLists::Base

# Public: Нетранзакционно удаляет все данные счетчика в кластере, включая основную партицию.
# Если кластеризация не используется, то удаляет все данные.
Expand Down
6 changes: 3 additions & 3 deletions spec/redis_counters/unique_hash_counter_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
let(:options) { {
:counter_name => :test_counter,
:field_name => :test_field,
:unique_list => { :list_class => RedisCounters::UniqueValuesLists::Standard }
:unique_list => { :list_class => RedisCounters::UniqueValuesLists::Blocking }
} }

let(:counter) { described_class.new(redis, options) }
Expand All @@ -18,7 +18,7 @@
:field_name => 'dd',
:partition_keys => [:date],
:unique_list => {
:list_class => RedisCounters::UniqueValuesLists::Fast,
:list_class => RedisCounters::UniqueValuesLists::NonBlocking,
:value_keys => [:sid],
:cluster_keys => [:p1],
:partition_keys => [:p2]
Expand Down Expand Up @@ -49,7 +49,7 @@
:group_keys => [:param1],
:partition_keys => [:date],
:unique_list => {
:list_class => RedisCounters::UniqueValuesLists::Standard,
:list_class => RedisCounters::UniqueValuesLists::Blocking,
:value_keys => [:sid],
:cluster_keys => [:param2],
:partition_keys => [:date]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require 'spec_helper'

describe RedisCounters::UniqueValuesLists::Standard do
describe RedisCounters::UniqueValuesLists::Blocking do
it_behaves_like 'unique_values_lists/common'
it_behaves_like 'unique_values_lists/set'

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
require 'spec_helper'

describe RedisCounters::UniqueValuesLists::Fast do
describe RedisCounters::UniqueValuesLists::NonBlocking do
it_behaves_like 'unique_values_lists/common'
it_behaves_like 'unique_values_lists/set'
end

0 comments on commit cccc2be

Please sign in to comment.