Packages
ferricstore
0.11.4
0.11.14
0.11.12
0.11.11
0.11.10
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.2.0
0.1.0
FerricFlow durable workflows and queues with native-protocol storage, Raft durability, and Bitcask persistence.
Current section
Files
Jump to
Current section
Files
lib/ferricstore/commands/set/random.ex
defmodule Ferricstore.Commands.Set.Random do
@moduledoc false
@max_replacement_count 10_000
def select_random_members(_members, count) when count < -@max_replacement_count,
do: {:error, "ERR count exceeds maximum allowed response size"}
def select_random_members(members, count) do
cond do
count == 0 ->
[]
count > 0 ->
Enum.take_random(members, count)
count < 0 ->
abs_count = abs(count)
if members == [] do
[]
else
tuple = List.to_tuple(members)
size = tuple_size(tuple)
for _ <- 1..abs_count, do: elem(tuple, :rand.uniform(size) - 1)
end
end
end
end