What does it mean if expire is set to null in a cache table? I am looking at the documentation for the expire field in the cache tables and the documentation in CacheBackendInterface.php says:

@param int $expire
One of the following values:

CacheBackendInterface::CACHE_PERMANENT: Indicates that the item should not be removed unless it is deleted explicitly.
A Unix timestamp: Indicates that the item will be considered invalid after this time, i.e. it will not be returned by get() unless $allow_invalid has been set to TRUE. When the item has expired, it may be permanently deleted by the garbage collector at any time.


When I look in a cache table, for example cache_render, I see that many entries have NULL in the expire column and I noticed it only get clear on a complete cache clear, such as after running drush cr.
What does a null value set for the expire column in a cache table mean?
Any value for the expire column that is different from CacheBackendInterface::CACHE_PERMANENT (-1) is considered a timestamp, indicating when the cache entry could be deleted. In the case of NULL, the value means the cache entry could be deleted in any moment.
As @4k4 said in his comment, data in cache tables are deleted when cron tasks run, and that doesn't necessarily means immediately.
The only issue with NULL is whether a module is using a not initialized variable which is expected to contain the expiration time. In that case, the cached value is kept in cache less than required.