module Redis::Commands::Geo

def _geoarguments(*args, options: nil, sort: nil, count: nil)

def _geoarguments(*args, options: nil, sort: nil, count: nil)
  args << sort if sort
  args << 'COUNT' << Integer(count) if count
  args << options if options
  args
end

def geoadd(key, *member)

Returns:
  • (Integer) - number of elements added to the sorted set

Parameters:
  • member (Array) -- arguemnts for member or members: longitude, latitude, name
  • key (String) --
def geoadd(key, *member)
  send_command([:geoadd, key, *member])
end

def geodist(key, member1, member2, unit = 'm')

Returns:
  • (String, nil) - returns distance in spefied unit if both members present, nil otherwise.

Parameters:
  • unit ('m', 'km', 'mi', 'ft') --
  • members (Array) --
  • key (String) --
def geodist(key, member1, member2, unit = 'm')
  send_command([:geodist, key, member1, member2, unit])
end

def geohash(key, member)

Returns:
  • (Array) - returns array containg geohash string if member is present, nil otherwise

Parameters:
  • member (String, Array) -- one member or array of members
  • key (String) --
def geohash(key, member)
  send_command([:geohash, key, member])
end

def geopos(key, member)

Returns:
  • (Array, nil>) - returns array of elements, where each

Parameters:
  • member (String, Array) -- one member or array of members
  • key (String) --
def geopos(key, member)
  send_command([:geopos, key, member])
end

def georadius(*args, **geoptions)

Returns:
  • (Array) - may be changed with `options`

Parameters:
  • options ('WITHDIST', 'WITHCOORD', 'WITHHASH') -- to return additional information
  • count (Integer) -- limit the results to the first N matching items
  • sort ('asc', 'desc') -- sort returned items from the nearest to the farthest
  • args (Array) -- key, longitude, latitude, radius, unit(m|km|ft|mi)
def georadius(*args, **geoptions)
  geoarguments = _geoarguments(*args, **geoptions)
  send_command([:georadius, *geoarguments])
end

def georadiusbymember(*args, **geoptions)

Returns:
  • (Array) - may be changed with `options`

Parameters:
  • options ('WITHDIST', 'WITHCOORD', 'WITHHASH') -- to return additional information
  • count (Integer) -- limit the results to the first N matching items
  • sort ('asc', 'desc') -- sort returned items from the nearest to the farthest or the farthest
  • args (Array) -- key, member, radius, unit(m|km|ft|mi)
def georadiusbymember(*args, **geoptions)
  geoarguments = _geoarguments(*args, **geoptions)
  send_command([:georadiusbymember, *geoarguments])
end