diff --git a/plugins/votingapi.inc b/plugins/votingapi.inc
new file mode 100644
index 0000000..1d8b2aa
--- /dev/null
+++ b/plugins/votingapi.inc
@@ -0,0 +1,36 @@
+<?php
+// $Id: $
+
+class views_content_cache_key_votingapi extends views_content_cache_key {
+
+  function options_form($value) {
+    // Get all of the possible tags that we could monitor:
+    $metadata = votingapi_metadata();
+    $options = array();
+    foreach ($metadata['tags'] as $tag => $data) {
+      $options['tag:' . $tag] = t('Tag: @name', array('@name' => $data['name']));
+    }
+    foreach ($metadata['functions'] as $function => $data) {
+      $options['function:' . $function] = t('Function: @name', array('@name' => $data['name']));
+    }
+
+    return array(
+      '#title' => t('Voting API'),
+      '#description' => t('Checks for updates to votes'),
+      '#type' => 'checkboxes',
+      '#options' => $options,
+      '#default_value' => $value,
+    );
+  }
+
+  function content_key($object, $object_type) {
+    $keys = array();
+    if ($object_type === 'votingapi_results') {
+      foreach ($object as $result) {
+        $keys[] = 'tag:' . $result['tag'];
+        $keys[] = 'function:' . $result['function'];
+      }
+    }
+    return $keys;
+  }
+}
diff --git a/views_content_cache.module b/views_content_cache.module
index 8ab2777..e284f94 100644
--- a/views_content_cache.module
+++ b/views_content_cache.module
@@ -48,6 +48,13 @@ function views_content_cache_comment(&$a1, $op) {
 }
 
 /**
+ * Implementation of hook_votingapi_results().
+ */
+function views_content_cache_votingapi_results($cached, $content_type, $content_id) {
+  views_content_cache_update_set($cached, 'votingapi_results');
+}
+
+/**
  * Create one or more update records for the given object.
  *
  * @param object $object
@@ -119,7 +126,12 @@ function views_content_cache_update_get($cid, $reset = FALSE) {
     $args = array();
     foreach ($mapped as $key_id => $key_value) {
       if (!empty($key_value)) {
-        $where[] = "{$key_id} IN (" . db_placeholders($key_value, 'varchar') . ")";
+        if (count($key_value) == 1) {
+          $where[] = "{$key_id} = " . db_placeholders($key_value, 'varchar');
+        }
+        else {
+          $where[] = "{$key_id} IN (" . db_placeholders($key_value, 'varchar') . ")";
+        }
         $args = array_merge($args, array_values($key_value));
       }
     }
@@ -191,7 +203,7 @@ function views_content_cache_id_record($cid) {
  * We store the schema mapping in the main cache table/bin, this means that it
  * can get invalidated quite quickly, but this will also probably coincide with
  * the views cache being flushed, so we're are just wasting a few CPU cycles in
- * reality. 
+ * reality.
  *
  * @param boolean $reset
  *   Reset the static and DB cache for the schema mapping.
@@ -337,5 +349,15 @@ function views_content_cache_views_content_cache_plugins() {
       ),
     );
   }
+  if (module_exists('votingapi')) {
+    $plugins['votingapi'] = array(
+      'handler' => array(
+        'path' => drupal_get_path('module', 'views_content_cache') . '/plugins',
+        'file' => 'votingapi.inc',
+        'class' => 'views_content_cache_key_votingapi',
+        'parent' => 'base',
+      ),
+    );
+  }
   return $plugins;
 }
