Index: src/bp-blogs/bp-blogs-cache.php
===================================================================
--- src/bp-blogs/bp-blogs-cache.php
+++ src/bp-blogs/bp-blogs-cache.php
@@ -42,27 +42,19 @@
  * @param int $blog_id ID of the current blog.
  * @param int $user_id ID of the user whose blog cache should be cleared.
  */
-function bp_blogs_clear_blog_object_cache( $blog_id, $user_id ) {
-	wp_cache_delete( 'bp_blogs_of_user_'        . $user_id, 'bp' );
-	wp_cache_delete( 'bp_total_blogs_for_user_' . $user_id, 'bp' );
-}
+function bp_blogs_clear_blog_object_cache( $blog_id = 0, $user_id = 0 ) {
+	if ( ! empty( $user_id ) ) {
+		wp_cache_delete( 'bp_blogs_of_user_'        . $user_id, 'bp' );
+		wp_cache_delete( 'bp_total_blogs_for_user_' . $user_id, 'bp' );
+	}
 
-/**
- * Clear cache when a new blog is created.
- *
- * @since BuddyPress (1.0.0)
- *
- * @param BP_Blogs_Blog $recorded_blog_obj The recorded blog, passed by
- *        'bp_blogs_new_blog'.
- */
-function bp_blogs_format_clear_blog_cache( $recorded_blog_obj ) {
-	bp_blogs_clear_blog_object_cache( false, $recorded_blog_obj->user_id );
 	wp_cache_delete( 'bp_total_blogs', 'bp' );
 }
 
 // List actions to clear object caches on
 add_action( 'bp_blogs_remove_blog_for_user', 'bp_blogs_clear_blog_object_cache', 10, 2 );
-add_action( 'bp_blogs_new_blog',             'bp_blogs_format_clear_blog_cache', 10, 2 );
+add_action( 'wpmu_new_blog',                 'bp_blogs_clear_blog_object_cache', 10, 2 );
+add_action( 'bp_blogs_remove_blog',          'bp_blogs_clear_blog_object_cache' );
 
 // List actions to clear super cached pages on, if super cache is installed
 add_action( 'bp_blogs_remove_data_for_blog', 'bp_core_clear_cache' );
Index: src/bp-core/deprecated/2.2.php
===================================================================
--- src/bp-core/deprecated/2.2.php
+++ src/bp-core/deprecated/2.2.php
@@ -63,3 +63,17 @@
 	_deprecated_function( __FUNCTION__, '2.2', 'bp_activity_post_type_update()' );
 	bp_activity_post_type_update( $post );
 }
+
+/**
+ * Clear cache when a new blog is created.
+ *
+ * @since BuddyPress (1.0.0)
+ * @deprecated BuddyPress (2.2.0)
+ *
+ * @param BP_Blogs_Blog $recorded_blog_obj The recorded blog, passed by
+ *        'bp_blogs_new_blog'.
+ */
+function bp_blogs_format_clear_blog_cache( $recorded_blog_obj ) {
+	_deprecated_function( __FUNCTION__, '2.2', 'bp_blogs_clear_blog_object_cache()' );
+	bp_blogs_clear_blog_object_cache( false, $recorded_blog_obj->user_id );
+}
Index: tests/phpunit/testcases/blogs/cache.php
===================================================================
--- tests/phpunit/testcases/blogs/cache.php
+++ tests/phpunit/testcases/blogs/cache.php
@@ -254,4 +254,38 @@
 		// check if function references cache or hits the DB by comparing query count
 		$this->assertEquals( $first_query_count, $wpdb->num_queries );
 	}
+
+	/**
+	 * @group bp_blogs_total_blogs
+	 */
+	public function test_bp_blogs_total_blogs_count_after_delete_blog() {
+		if ( ! is_multisite() ) {
+			return;
+		}
+
+		$u = $this->factory->user->create();
+
+		// need to make sure we set the 'public' flag due to how BP_Blogs_Blogs:get_all() works
+		$b1 = $this->factory->blog->create( array(
+			'meta' => array(
+				'public' => 1
+			)
+		) );
+		$b2 = $this->factory->blog->create( array(
+			'meta' => array(
+				'public' => 1
+			)
+		) );
+
+		bp_blogs_record_blog( $b1, $u );
+		bp_blogs_record_blog( $b2, $u );
+
+		// prime total blog count
+		bp_blogs_total_blogs();
+
+		// delete a blog
+		wpmu_delete_blog( $b2 );
+
+		$this->assertEquals( 1, bp_blogs_total_blogs() );
+	}
 }
