WordPress plugins and themes can store a lot of temporary data known as transients. By default these transients are stored in the wp_options table and can accumulate rather quickly. Recently on codeable I cleaned a site with 58000 expired transients that were causing the database to crash daily. Due to an idiosyncrasy in WordPress core, expired transients are only removed from the database if access to them is attempted, if no access to them is made then the transients stay in the wp_options table. This tutorial will show you how to delete expired transients using WP-CLI from wp_options or your external object cache and automate the deletion of these transients ever day using a cronjob.
Automatically Delete Expired WordPress Transients using WP-CLI
Deleting expired transients from your WordPress database with WP-CLI is very easy
wp transient delete --expiredIf you use an external object cache like Redis Memcached or PHP-APCu, then you empty it with this command
wp cache flushSo you do not have to do this manually, I put this in a real cronjob
crontab -eFor users without an external object cache use this cronjob, replace www-data with your user and /var/www/guides.wp-bullet.com with your WordPress path
@daily sudo -u www-data wp transient delete --expired --path=/var/www/guides.wp-bullet.comIf you are using an object cache then you can use this cronjob to flush the object cache using WP-CLI
@daily sudo -u www-data wp cache flush --path=/var/www/guides.wp-bullet.comNow you won’t have to worry about expired transients accumulating and potentially slowing down your site :).
Sources
Clear Transients Stackexchange
wp transient delete
wp cache flush
The Deal with WordPress Transients
Transients API
You’re Using Transients Wrong
WordPress Core Ticket

Thanks for sharing.