diff --git a/.travis.yml b/.travis.yml
index b66a78f3077cd054f44c995d402351f28bfd808d..698cb61c25cbe3475d78d6027eebd45049521bf4 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,18 +1,28 @@
 # Validate this file using http://lint.travis-ci.org/
 language: python
+addons:
+  postgresql: "9.4"
+services:
+  - redis-server
 python:
   - "2.7"
+env:
+  global:
+    - MUTALYZER_TEST_REDIS_URI=redis://localhost
+  matrix:
+    - MUTALYZER_TEST_DATABASE_URI=sqlite://
+    - MUTALYZER_TEST_DATABASE_URI=postgres://postgres@127.0.0.1/mutalyzer_test
+    - MUTALYZER_TEST_DATABASE_URI=mysql://travis@127.0.0.1/mutalyzer_test?charset=utf8
 before_install:
   - sudo apt-get update -qq
   - sudo apt-get install -y swig
   - pip install -r requirements.txt
-  - pip install psycopg2
+  - bash -c "if [[ '$MUTALYZER_TEST_DATABASE_URI' =~ 'postgres' ]]; then pip install psycopg2; fi"
 install:
   - pip install .
 before_script:
-  - psql -c 'create database mutalyzer_test;' -U postgres
-  - mysql -e 'create database mutalyzer_test;'
+  - bash -c "if [[ '$MUTALYZER_TEST_DATABASE_URI' =~ 'postgres' ]]; then psql -c 'DROP DATABASE IF EXISTS mutalyzer_test;' -U postgres; fi"
+  - bash -c "if [[ '$MUTALYZER_TEST_DATABASE_URI' =~ 'postgres' ]]; then psql -c 'CREATE DATABASE mutalyzer_test;' -U postgres; fi"
+  - bash -c "if [[ '$MUTALYZER_TEST_DATABASE_URI' =~ 'mysql' ]]; then mysql -e 'CREATE DATABASE IF NOT EXISTS mutalyzer_test;'; fi"
 script:
   - py.test
-  - MUTALYZER_TEST_DATABASE_URI=postgres://postgres@127.0.0.1/mutalyzer_test py.test
-  - MUTALYZER_TEST_DATABASE_URI=mysql://travis@127.0.0.1/mutalyzer_test?charset=utf8 py.test
diff --git a/doc/testing.rst b/doc/testing.rst
index 706d52251846acbff851c1fb29f55066c2c81616..e7bf32f0b80062d85b55d1b242febcec98e7f034 100644
--- a/doc/testing.rst
+++ b/doc/testing.rst
@@ -31,6 +31,9 @@ PostgreSQL::
 
     $ pg_virtualenv bash -c 'MUTALYZER_TEST_DATABASE_URI=postgres://${PGUSER}:${PGPASSWORD}@${PGHOST}:${PGPORT}/${PGDATABASE} py.test'
 
+Similarly, the `MUTALYZER_TEST_REDIS_URI` specifies a Redis server to use for
+testing. If unspecified, a mock Redis server is used.
+
 Tests are `run automatically on Travis CI
 <https://travis-ci.org/mutalyzer/mutalyzer>`_ with SQLite, PostgreSQL, and
 MySQL, for each pull request and push on GitHub.
diff --git a/tests/utils.py b/tests/utils.py
index 6743804fdb528b75d0ffb3c1c2a90b821c9ae88f..0e77b291c48747a49da6dd7965826dd79be16053 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -11,6 +11,7 @@ import shutil
 import tempfile
 
 from mutalyzer.config import settings
+from mutalyzer.redisclient import client as redis
 from mutalyzer import db
 
 
@@ -27,11 +28,12 @@ class TestEnvironment(object):
         os.close(log_handle)
 
         database_uri = os.getenv('MUTALYZER_TEST_DATABASE_URI', 'sqlite://')
+        redis_uri = os.getenv('MUTALYZER_TEST_REDIS_URI', None)
 
         settings.configure({'DEBUG':        False,
                             'TESTING':      True,
                             'CACHE_DIR':    self.cache_dir,
-                            'REDIS_URI':    None,
+                            'REDIS_URI':    redis_uri,
                             'DATABASE_URI': database_uri,
                             'LOG_FILE':     self.log_file})
 
@@ -41,6 +43,9 @@ class TestEnvironment(object):
             db.Base.metadata.drop_all(db.session.get_bind())
             db.Base.metadata.create_all(db.session.get_bind())
 
+        if redis_uri is not None:
+            redis.flushdb()
+
         for fixture in fixtures:
             fixture()