diff --git a/.credo.exs b/.credo.exs index 0b48eed..d8e1c1c 100644 --- a/.credo.exs +++ b/.credo.exs @@ -16,7 +16,11 @@ ## Refactoring Opportunities {Credo.Check.Refactor.LongQuoteBlocks, false}, - {Credo.Check.Refactor.CyclomaticComplexity, max_complexity: 15} + {Credo.Check.Refactor.CyclomaticComplexity, max_complexity: 15}, + + ## TODO and FIXME do not cause the build to fail + {Credo.Check.Design.TagTODO, exit_status: 0}, + {Credo.Check.Design.TagFIXME, exit_status: 0} ] } ] diff --git a/.travis.yml b/.travis.yml index e974419..6049cf6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ elixir: - 1.8 otp_release: - - 21.2 + - 21.3 env: - NBX_TEST=true MIX_ENV=test DOCKER_COMPOSE_VERSION=1.22.0 REDIS_CLUSTER_IP=0.0.0.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index ad6725e..08fbd3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,21 @@ # Change Log -## [v1.0.0](https://github.com/cabol/nebulex_redis_adapter/tree/v1.0.0) (2018-12-11) +## [v1.1.0](https://github.com/cabol/nebulex_redis_adapter/tree/v1.1.0) (2019-05-10) +[Full Changelog](https://github.com/cabol/nebulex_redis_adapter/compare/v1.0.0...v1.1.0) + +**Implemented enhancements:** + +- Default cluster support [\#10](https://github.com/cabol/nebulex_redis_adapter/issues/10) + +**Closed issues:** + +- Redis Clustering on Redis 4+ without Sentinel [\#8](https://github.com/cabol/nebulex_redis_adapter/issues/8) + +**Merged pull requests:** + +- Cluster Support [\#11](https://github.com/cabol/nebulex_redis_adapter/pull/11) ([cabol](https://github.com/cabol)) + +## [v1.0.0](https://github.com/cabol/nebulex_redis_adapter/tree/v1.0.0) (2018-12-12) **Implemented enhancements:** - Add TravisCI support [\#7](https://github.com/cabol/nebulex_redis_adapter/issues/7) diff --git a/README.md b/README.md index 5609e31..9a0141f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -# Nebulex adapter for Redis +# NebulexRedisAdapter +> ### Nebulex adapter for Redis with cluster support. [![Build Status](https://travis-ci.org/cabol/nebulex_redis_adapter.svg?branch=master)](https://travis-ci.org/cabol/nebulex_redis_adapter) [![Coverage Status](https://coveralls.io/repos/github/cabol/nebulex_redis_adapter/badge.svg?branch=master)](https://coveralls.io/github/cabol/nebulex_redis_adapter?branch=master) @@ -24,7 +25,7 @@ Add `nebulex_redis_adapter` to your list of dependencies in `mix.exs`: ```elixir defp deps do [ - {:nebulex_redis_adapter, "~> 1.0"} + {:nebulex_redis_adapter, "~> 1.1"} ] end ``` diff --git a/lib/nebulex_redis_adapter/cluster.ex b/lib/nebulex_redis_adapter/cluster.ex index 24fcb2b..d71f6a0 100644 --- a/lib/nebulex_redis_adapter/cluster.ex +++ b/lib/nebulex_redis_adapter/cluster.ex @@ -17,6 +17,7 @@ defmodule NebulexRedisAdapter.Cluster do reducer :: (any, any -> any) ) :: any | no_return def exec!(cache, command, init_acc \\ nil, reducer \\ fn res, _ -> res end) do + # TODO: Perhaps this should be performed in parallel Enum.reduce(cache.__nodes__, init_acc, fn {node_name, pool_size}, acc -> cache |> NebulexCluster.pool_name(node_name) diff --git a/lib/nebulex_redis_adapter/redis_cluster.ex b/lib/nebulex_redis_adapter/redis_cluster.ex index 5c32873..3a09038 100644 --- a/lib/nebulex_redis_adapter/redis_cluster.ex +++ b/lib/nebulex_redis_adapter/redis_cluster.ex @@ -80,6 +80,7 @@ defmodule NebulexRedisAdapter.RedisCluster do reducer :: (any, any -> any) ) :: any | no_return def exec!(cache, command, init_acc \\ nil, reducer \\ fn res, _ -> res end) do + # TODO: Perhaps this should be performed in parallel cache |> cluster_slots_tab() |> :ets.lookup(cache) diff --git a/mix.exs b/mix.exs index 7021f2d..202df84 100644 --- a/mix.exs +++ b/mix.exs @@ -1,7 +1,7 @@ defmodule NebulexRedisAdapter.MixProject do use Mix.Project - @version "1.1.0-dev" + @version "1.1.0" def project do [ @@ -34,39 +34,39 @@ defmodule NebulexRedisAdapter.MixProject do defp deps do [ - {:redix, "~> 0.9"}, + {:redix, "~> 0.10"}, # This is because the adapter tests need some support modules and shared # tests from nebulex dependency, and the hex dependency doesn't include # the test folder. Hence, to run the tests it is necessary to fetch # nebulex dependency directly from GH. - # {:nebulex, nebulex_opts()}, - {:nebulex_cluster, github: "cabol/nebulex_cluster"}, + {:nebulex, nebulex_dep()}, + {:nebulex_cluster, "~> 0.1"}, {:jchash, "~> 0.1", runtime: false}, {:crc, "~> 0.9"}, # Test - {:excoveralls, "~> 0.6", only: :test}, - {:benchee, "~> 0.13", optional: true, only: :dev}, - {:benchee_html, "~> 0.5", optional: true, only: :dev}, + {:excoveralls, "~> 0.11", only: :test}, + {:benchee, "~> 1.0", optional: true, only: :dev}, + {:benchee_html, "~> 1.0", optional: true, only: :dev}, # Code Analysis {:dialyxir, "~> 0.5", optional: true, only: [:dev, :test], runtime: false}, - {:credo, "~> 0.10", optional: true, only: [:dev, :test]}, + {:credo, "~> 1.0", optional: true, only: [:dev, :test]}, # Docs - {:ex_doc, "~> 0.19", only: :dev, runtime: false}, - {:inch_ex, "~> 0.5", only: :docs} + {:ex_doc, "~> 0.20", only: :dev, runtime: false}, + {:inch_ex, "~> 2.0", only: :docs} ] end - # defp nebulex_opts do - # if System.get_env("NBX_TEST") do - # [github: "cabol/nebulex", branch: "master"] - # else - # "~> 1.0" - # end - # end + defp nebulex_dep do + if System.get_env("NBX_TEST") do + [github: "cabol/nebulex", tag: "v1.1.0", override: true] + else + "~> 1.1" + end + end defp package do [