Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Commits on Dec 25, 2010
  1. adding test for zcard

    authored
Commits on Dec 15, 2010
  1. @mattsta

    Bump version to 2.2-er-1.1

    mattsta authored
    Also clairifying some README parts and referencing a newer redis hash
  2. @mattsta

    Add missing lpushx, rpushx, and linsert commands with tests

    mattsta authored
    All 179 tests pass.
  3. @mattsta
  4. @mattsta
  5. @mattsta

    Add and test redis-2.2 commands ({get,set}{range,bit}, brpoplpush)

    mattsta authored
    Implements:
      - getbit
      - setbit
      - getrange
      - setrange
      - brpoplpush
    
    Tests added for all except brpoplpush.
    
    All 171 tests pass.
  6. @mattsta

    Rename redis_return_status to redis_error

    mattsta authored
    Also re-enable a test that doesn't crash redis anymore (NaN issue).
    
    Commands using the integer return parser can now throw errors properly
    instead of getting badmatch in the return value pattern matcher.
  7. @mattsta
  8. @mattsta
  9. @mattsta
Commits on Dec 12, 2010
  1. @mattsta

    Fix the macro generating macro to remove copy/paste artifacts

    mattsta authored
    Yay for code shrinkage!
Commits on Aug 28, 2010
  1. @mattsta

    Fix return types for setnx and msetnx

    mattsta authored
    value set successfully = true; not set = false
    
    Bumping to version 0.4.5.
    
    All 131 tests pass.
Commits on Aug 19, 2010
  1. @mattsta

    Add zset withscores support

    mattsta authored
    Now er:zrange, er:zrevrange, and er:zrangebyscore take an optional
    last argument of 'withscores' to mean you want scores too.
    Examples:
      er:zrange(Server, key, 0, 5):
        [<<"entry1">>, <<"entry2">>, ...]
      er:zrange(Server, key, 0, 5, withscores):
        [{<<"entry1">>, <<"score1">>}, {<<"entry2">>, <<"score2">>}, ...]
    
    Bumping to version 0.3.5.
    
    All 127 tests pass.
  2. @mattsta

    Add er utilities module: eru

    mattsta authored
    Common non-redis-command utilities
Commits on Aug 16, 2010
  1. @mattsta

    Add redis hashes returned as proplists or keyvalue lists

    mattsta authored
    Use er:hgetall_p to return proplists (first element
    of the tuples are the hash keys converted to atoms)
    Use er:hgetall_k to return key value lists (all
    elements remain binary, just paired in tuples)
    
    Bumping to version 0.2.5.
    
    All 123 tests pass.
  2. @mattsta

    Fix multiple bulk (not multibulk) replies to be lists

    mattsta authored
    Before, er:keys(Server, "*") was returning:
    [{ok, <<"key1">>}, {ok, <<"key2">>}, ...]
    Now we return:
    [<<"key1">>, <<"key2">>, ...]
  3. @mattsta

    Fix empty list to binary encoding and add its matching test

    mattsta authored
    All 114 tests pass.
Commits on Aug 7, 2010
  1. @mattsta

    Add STRLEN and PERSIST commands

    mattsta authored
    Bump version to 0.1.5
Commits on Jul 10, 2010
  1. @mattsta

    Add zscore command

    mattsta authored
Commits on Jun 30, 2010
  1. @mattsta

    [MAJOR] Remove erldis; add pool with subscribe and b[lr]pop

    mattsta authored
    Thanks to erldis for being my redis protocol handler in the beginning,
    but I decided erldis is trying to do too much in too complicated of
    a space to be useful.  erldis_client is replaced by er_redis.
    
    This commit replaces erldis with the redis protocol handler from
    http://github.com/bmizerany/redis-erl/blob/master/src/redis.erl
    Though, only about 20 to 30 lines of that file survived my rewriting
    and fixing of it.
    
    We now have a super simple redis protocol handler without dealing with
    crazy queue handling and other overly-complicated erldis-isms.  One
    client = one process = one socket.  Them's the rules.  To help speed
    things up, we have a new er_pool server as well.  er_pool handles
    pools of er_redis servers taking care to not cross the streams.
    
    This is a great starting point.  I use er in production, so any
    major problems don't linger for very long.
    
    All 113 tests pass.
Commits on Jun 20, 2010
  1. @mattsta

    Fix sismember return type (true-false instead of 1-0)

    mattsta authored
    Also bumping version number.
Commits on Jun 19, 2010
  1. @mattsta

    Update LFE to use new strings-in-binaries syntax

    mattsta authored
    No more #b(48) meaning <<"0">>.  Now we can use #b("0").
    
    All tests pass.  Bumping version number.
Commits on Jun 13, 2010
  1. @mattsta

    Add start/0 to er_app since we don't need arguments

    mattsta authored
    That's right -- we don't need no stinkin' arguments.
Commits on Jun 1, 2010
  1. @mattsta

    Move OTP application infrastructure from 'erldis' to 'er'

    mattsta authored
    Goodbye erldis.app, erldis_app, and erldis_sup.  There's a new kid
    in town and his name is er.
Commits on May 31, 2010
  1. @mattsta
  2. @mattsta
  3. @mattsta

    Fix multibulk responses containing empty strings

    mattsta authored
    Empty strings aren't nil.  Stop pretending they are.  Stop
    throwing away all my data because one response string is empty.
Commits on May 30, 2010
  1. @mattsta

    Enable hmget tests now that multibulk replies work properly

    mattsta authored
    Turns out multibulk responses were working okay, but only if
    all the elements you asked for existed.  Any nil responses in
    the multibulk reply would cause the client to hang and eventually
    crash.  Now we can handle data and nil elements in multibulk
    replies.
  2. @mattsta

    Fix multibulk responses containing nil elements

    mattsta authored
    Now we can hmget/mget/multibulk get anything containing nil
    elements without hanging the client.
    
    It's not pretty, but it works.
Commits on May 29, 2010
  1. @mattsta

    Add er_server to automatically handle and retain redis connections

    mattsta authored
    er_server is a bolted on gen_server to all the redis commands.
    This allows you to start_link to a redis server and have access
    to all redis commands by gen_server name without having to retain
    a connection object yourself.
    
    Examples:
      er_server:start_link(redisA, "localhost", 6379).
      er_server:start_link(redisTwo, "localhost", 6371).
      er_server:set(redisA, bob, okay).
      er_server:set(redisTwo, twokey, okay_two).
    
    You can manage multiple redis endpoints fairly simply with
    all of the connection management abstracted away for you.
Commits on May 28, 2010
  1. @mattsta

    Add (100) er/redis test cases

    mattsta authored
    We now have 100 eunit test cases against the er library.
    
    Right now, er_tests.erl can be considered to be the official
    reference point for how er is supposed to behave.  Redis commands
    without test cases are listed, but commented out in er_tests.
    
    If something does not have a working test, it is not guarenteed
    to work.  Note: hmget isn't working currently.  Pub/sub is probably
    not working, and god help you if you try blpop/brpop before it
    gets tested in er_tests.
    
    The testing methodolgy currently is: "get basic behaviours tested
    then work on the more complicated stuff later."  Real artists ship.
  2. @mattsta

    Improve redis return types for native erlang behaviour

    mattsta authored
    Integer returns of 1/0 meaning "yes"/"no" or "pass"/"fail" are
    returned as true/false in Erlang instead of returning numeric
    results.  Also, inf, -inf, and nan are handled correctly.
    
    Technically, redis doesn't have a "return true/false" type, but
    it is much nicer than trying to match 1 or 0 everywhere.
  3. @mattsta
  4. @mattsta

    Fix sending lists of data inside the argument list

    mattsta authored
    Since we can't do varargs in Erlang, we use lists:
      send(Cxn, Key, [Value1, Value2, Value3])
    But sometimes we want to be lazy and just do:
      send(Cxn, Key, "set a value")
    
    This patch allows both cases to co-exist.  Instead of (as
    previously) crashing, we convert the inner values to
    binaries then return the converted list.  At the end, the deep
    list of binaries is flattened to perform redis protocol
    calculations and construction.
  5. @mattsta
Something went wrong with that request. Please try again.