Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Commits on Feb 12, 2014
  1. Update bundled rebar

    authored
    Not sure why we're still distributing rebar, but we are, so
    it may as well be up to date.
Commits on Feb 10, 2014
  1. Bump version to 2.8.5-er-1.7.9

    authored
    All tests pass.
  2. Add support for 2.8.5 and multi-arity commands

    authored
    This is the start of big changes for er.
    
    er now directly implements all commands as of Redis 2.8.5 (some
    of the new commands aren't hooked up to erlang-specific type
    decoders yet.  Fix as necessary).
    
    er now also generates multi-arity commands for Redis commands
    that support var args.  Example: er now generates multi-functions
    like: er:mget/3, er:mget/4, er:mget/5, ..., er:mget/16. (16 by
    default, but you can increase it arbitrarily high *or* you can
    just add a list of the other arguments you want as well.)
    
    er maintains a list of Redis functions that aren't var arg
    capable (like GET versus MGET), so the fixed-arg functions
    don't get multi-arg counterparts.
    
    Also, er_server.lfe is gone because er_pool is the proper way
    of creating named and long-lived connections to your Redis server.
    
    Coming soon: erlang maps instead of proplists for some return
    values, moving to poolboy for the connection pool, support
    for sentinel, cluster, and live failover mechanisms.
  3. Add shell scripts to verify Redis command coverage

    authored
    The scripts read the command table directly from redis.c
    and can compare the redis command listing versus
    the commands er implements directly.
    
    (You can always run any command by passing a list to er_redis:q/2,
    but it helps to have proper commands with proper argumet decoders.)
  4. Update to LFE master instead of LFE-thee-years-old

    authored
    The major change is LFE doesn't allow dot list deconstruction
    anymore, so (x . xs) now must be (cons x xs), and (#b("binary"))
    must now be (list #b("binary")).
    
    All tests pass as of this commit with LFE master 89ff3150d2.
  5. Fix tests to match ZADD/ZREM changes

    authored
    All tests pass.
  6. Fix zrem/zadd return values to be integers

    authored
    Was true/false a long time ago, methinks.
  7. Help repair a unicode storage problem.

    authored
    Hopefully?
  8. Update LFE and fix four misconfigured tests.

    authored
    All 195 tests pass.
  9. Bump version to 2.4-er-1.5.3

    authored
    Minor bugfix for start_link'ing nameless servers
    Minor feature for less DRY when creating children in supervisors
  10. Fix nameless start_link

    authored
  11. Bump version to 2.4-er-1.5

    authored
    Supports redis 2.2 and 2.4 (and 2.9, just not command complete yet)
    There is full varadic command support if you use lists as arguments
    to er functions.
    Example: er:get(Server, [key1, key2, key3])
  12. Add eru:hcopy/3 with tests

    authored
    Now we can copy redis hashes!
    
    All 195 tests pass.
  13. Add untested attempt at creating primary/backup er_pool clusters

    authored
    This module hasn't been run or tested.  It compiles with
    no errors or warnings.  At worst, it crashes on start.
    
    More testing/fixes/viability is forthcoming.
  14. Kill pool if redis goes away or becomes unreachable

    authored
    Before, we would loop on a dead redis instance in the hopes it would
    quickly be restarted.  Now we just die and let supervisors reload
    as necessary.
  15. Kill er_redis on connection error

    authored
    Before, we kept the er_redis alive but without a socket.  Now we
    don't allow dead er_redises to linger.
  16. Add tests for lpop, rpop, blpop, brpop commands

    authored
    Also fix in-line documentation of the test list.
  17. Cleanup end-of-line whitespace

    authored
  18. Add ping and echo commands with tests

    authored
    All 187 tests pass.
  19. Bump version to 2.2-er-1.3 -- now with transaction support

    authored
    There are a series of in-progress redis<->lfe<->erlang helper macros
    in progress too.  They'll turn into a nice system soon enough.
  20. Add transaction (multi/exec/discard) support.

    authored
    Turns out everything has a potential return type of <<"queued">> when
    using transactions.  Ugly, but doable.  We may want to make the return
    functions nested so we could have the <<"queued">> check in one place.
    
    The give-me-a-fun-and-i-do-you-a-txn style is inspired by mnesia.  Just
    give er:er_transaction/2 or erp:er_transaction/1 a one-airity fun, use
    the parameter to the fun as your connection back to redis, and
    everything you need will Just Work.
  21. Make exec/discard clean up, fix shutdown, fix reserved back to normal

    authored
    Once you exec, you are no longer reserved.  Same for discard.
    
    Shutdown now actually shuts down the er_pool.
    
    Reserved er_pools were evaporating if they crashed.  Now if a
    reserved er_pool crashes, a new er_pool is spawned into the available
    pool again.
  22. Add auto-expansion by 'counter and defkey-suite explosions

    authored
    Example: (defkey-suite user (name addrs friends posts)).
    The above one line generates generates 12 functions (each function
    is duplicated.  One has colons and its duplicate has underscores
    instead of colons to make calling from regular erlang easier):
    counter:user()
    user:N(N)
    user:N:name(N)
    user:N:addrs(N)
    user:N:friends(N)
    user:N:posts(N)
  23. Make defkey auto-generate functions with underscores too

    authored
    Now (defkey (user N stories)) makes two functions:
    user:N:stories(N) and user_N_stories(N).  They both do the same
    thing (which is, return <<"user:N:stories">>).
    
    The underscore functions play nicer with regular erlang.
  24. Make defkey even more automatic -- no function name required

    authored
    Also removing the include from defkey include to make it easier
    to include defkey in other applications directly from the deps/
    directory.
  25. Add redis key maker function generator for future evil plans

    authored
    i.e. (defkey key_comic_article (comic ComicNum article ArticleNum)) makes:
    key_comic_article(ComicNum, ArticleNum) ->
      eru:er_key(comic, ComicNum, article, ArticleNum).
    
    So calling key_comic_article(6, 12) generates <<"comic:6:article:12">>
  26. Add new base history for entire er repo

    authored
    er started out as a fork of another repository, but I quickly
    rewrote so much code of the broken original implementation,
    that the entire original repository ceased to have any code
    in this fork.
    
    But, github still showed the original parentage of this repository
    which made it look like er is "just a fork" instead of an
    entire project full of creativity, insight, and
    developmental awesomeness.
    
    So, under great pains, I'm truncating the history of er to this
    date.  This will render all commit references to the prior
    repository useless, for which I am sorry.  You are better off
    deleting your old repository and re-checking out this one.
    
    Please forward all complaints to management.
Something went wrong with that request. Please try again.