Permalink
Switch branches/tags
Nothing to show
Commits on Dec 25, 2010
  1. adding test for zcard

    tnm committed Dec 25, 2010
Commits on Dec 15, 2010
  1. Bump version to 2.2-er-1.1

    mattsta committed Dec 15, 2010
    Also clairifying some README parts and referencing a newer redis hash
  2. Add missing lpushx, rpushx, and linsert commands with tests

    mattsta committed Dec 15, 2010
    All 179 tests pass.
  3. Add and test redis-2.2 commands ({get,set}{range,bit}, brpoplpush)

    mattsta committed Dec 15, 2010
    Implements:
      - getbit
      - setbit
      - getrange
      - setrange
      - brpoplpush
    
    Tests added for all except brpoplpush.
    
    All 171 tests pass.
  4. Rename redis_return_status to redis_error

    mattsta committed Dec 15, 2010
    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.
Commits on Dec 12, 2010
  1. Fix the macro generating macro to remove copy/paste artifacts

    mattsta committed Dec 12, 2010
    Yay for code shrinkage!
Commits on Aug 28, 2010
  1. Fix return types for setnx and msetnx

    mattsta committed Aug 28, 2010
    value set successfully = true; not set = false
    
    Bumping to version 0.4.5.
    
    All 131 tests pass.
Commits on Aug 19, 2010
  1. Add zset withscores support

    mattsta committed Aug 19, 2010
    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. Add er utilities module: eru

    mattsta committed Aug 17, 2010
    Common non-redis-command utilities
Commits on Aug 16, 2010
  1. Add redis hashes returned as proplists or keyvalue lists

    mattsta committed Aug 16, 2010
    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. Fix multiple bulk (not multibulk) replies to be lists

    mattsta committed Aug 16, 2010
    Before, er:keys(Server, "*") was returning:
    [{ok, <<"key1">>}, {ok, <<"key2">>}, ...]
    Now we return:
    [<<"key1">>, <<"key2">>, ...]
  3. Fix empty list to binary encoding and add its matching test

    mattsta committed Aug 16, 2010
    All 114 tests pass.
Commits on Aug 7, 2010
  1. Add STRLEN and PERSIST commands

    mattsta committed Aug 7, 2010
    Bump version to 0.1.5
Commits on Jul 10, 2010
  1. Add zscore command

    mattsta committed Jul 10, 2010
Commits on Jun 30, 2010
  1. [MAJOR] Remove erldis; add pool with subscribe and b[lr]pop

    mattsta committed Jun 30, 2010
    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. Fix sismember return type (true-false instead of 1-0)

    mattsta committed Jun 20, 2010
    Also bumping version number.
Commits on Jun 19, 2010
  1. Update LFE to use new strings-in-binaries syntax

    mattsta committed Jun 19, 2010
    No more #b(48) meaning <<"0">>.  Now we can use #b("0").
    
    All tests pass.  Bumping version number.
Commits on Jun 13, 2010
  1. Add start/0 to er_app since we don't need arguments

    mattsta committed Jun 13, 2010
    That's right -- we don't need no stinkin' arguments.
Commits on Jun 1, 2010
  1. Move OTP application infrastructure from 'erldis' to 'er'

    mattsta committed Jun 1, 2010
    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. Fix multibulk responses containing empty strings

    mattsta committed May 31, 2010
    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. Enable hmget tests now that multibulk replies work properly

    mattsta committed May 30, 2010
    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. Fix multibulk responses containing nil elements

    mattsta committed May 30, 2010
    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. Add er_server to automatically handle and retain redis connections

    mattsta committed May 29, 2010
    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. Add (100) er/redis test cases

    mattsta committed May 28, 2010
    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. Improve redis return types for native erlang behaviour

    mattsta committed May 28, 2010
    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. Fix sending lists of data inside the argument list

    mattsta committed May 28, 2010
    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.