diff --git a/plugins/views_content_cache/nodequeue.inc b/plugins/views_content_cache/nodequeue.inc
new file mode 100644
index 0000000..9b04956
--- /dev/null
+++ b/plugins/views_content_cache/nodequeue.inc
@@ -0,0 +1,32 @@
+<?php
+
+class views_content_cache_key_nodequeue extends views_content_cache_key {
+  function options_form($value, &$handler) {
+    // Get list of nodequeues
+    $options = array();
+    $subqueues = nodequeue_load_subqueues_by_queue(nodequeue_get_all_qids());
+    foreach ($subqueues as $sqid => $subqueue) {
+      $options[$sqid] = $subqueue->title;
+    }
+    natcasesort($options);
+
+    return array(
+      '#title' => t('Nodequeues'),
+      '#description' => t('Checks for changes to nodequeues for the selected queues.'),
+      '#type' => 'checkboxes',
+      '#options' => $options,
+      '#default_value' => $value,
+    );
+  }
+
+  function content_key($object, $object_type) {
+    if ($object_type === 'nodequeue') {
+      return $object->sqid;
+    }
+  }
+
+  function clause_mode() {
+    // We can't be combined with other cache segments:
+    return 'OR';
+  }
+}
diff --git a/views_content_cache.info b/views_content_cache.info
index d3d2bd2..a7f558e 100644
--- a/views_content_cache.info
+++ b/views_content_cache.info
@@ -10,6 +10,7 @@ files[] = plugins/views_content_cache/base.inc
 files[] = plugins/views_content_cache/comment.inc
 files[] = plugins/views_content_cache/node.inc
 files[] = plugins/views_content_cache/node_only.inc
+files[] = plugins/views_content_cache/nodequeue.inc
 files[] = plugins/views_content_cache/og.inc
 files[] = plugins/views_content_cache/votingapi.inc
 
diff --git a/views_content_cache.module b/views_content_cache.module
index 340b060..ff25228 100644
--- a/views_content_cache.module
+++ b/views_content_cache.module
@@ -95,6 +95,30 @@ function views_content_cache_votingapi_results($cached, $content_type, $content_
   views_content_cache_update_set($cached, 'votingapi_results');
 }
 
+ /**
+ * Implements hook_nodequeue_add().
+ */
+function views_content_cache_nodequeue_add($sqid, $nid) {
+  $subqueue = nodequeue_load_subqueue($sqid);
+  views_content_cache_update_set($subqueue, 'nodequeue');
+}
+
+/**
+ * Implements hook_nodequeue_remove().
+ */
+function views_content_cache_nodequeue_remove($sqid, $nid) {
+  $subqueue = nodequeue_load_subqueue($sqid);
+  views_content_cache_update_set($subqueue, 'nodequeue');
+}
+
+/**
+ * Implements hook_nodequeue_sort_alter().
+ */
+function views_content_cache_nodequeue_sort_alter($nodes, $sqid) {
+  $subqueue = nodequeue_load_subqueue($sqid);
+  views_content_cache_update_set($subqueue, 'nodequeue');
+}
+
 /**
  * Create one or more update records for the given object.
  *
@@ -495,6 +519,18 @@ function views_content_cache_views_content_cache_plugins() {
       ),
     );
   }
+  if (module_exists('nodequeue')) {
+    $plugins['nodequeue'] = array(
+      'title' => t('Nodequeue'),
+      'description' => t('Invalidates cache when a nodequeue is altered'),
+      'handler' => array(
+        'path' => drupal_get_path('module', 'views_content_cache') . '/plugins',
+        'file' => 'nodequeue.inc',
+        'class' => 'views_content_cache_key_nodequeue',
+        'parent' => 'base',
+      ),
+    );
+  }
   if (module_exists('votingapi')) {
     $plugins['votingapi'] = array(
       'handler' => array(
