Releases: karptonite/geekcache
More fixes for staging and tags
Fixes a number of issues related to staging and caching.
The most important fix is related to ensuring that we don't clear out the staged results for a given tag when one tagged cache in a staged group is null. Previously, if one cache had the same tag as another, if the first was null, it could also cause the system to wrongly conclude that the second was null as well.
In addition, there were some improvements that ensure that we are not needlessly generating new tag versions when we are only trying to read the version to see if it is valid.
Fix some race conditions for stageable cache
- if we try to stage keys that are already available as results, we increment the remaining reads.
- if a cache is put while it has remaining reads, update the value in the staging cache to the new value.
- if a cache is deleted while it has remaining reads, update the value in the staging cache to the new value.
Support PHP 8.3 and 8.4
Changes to typings to support php 8.3 and 8.4.
v3.0.3
Ensure that memoized caches handle staging and unstaging properly, to avoid memory leaks
v3.0.2
Bugfix: Avoid memory leak when checking a tagged cache which has no results; unstage the results from the tag itself by calling get.
Bugfix: ensure getMulti always returns an array
Bugfix to ensure that our code treats getMulti failures as no results found. This may not be the desired behavior for some, but I think it will work for us.
Use GetMulti to reduce the number of requests to memcached
use getMulti to reduce the number of requests to the cache backend. This works automatically for tags and tagged caches; additionally, keys staged with stage() will be gotten on the next get, and subsequently those keys can be gotten with get() without triggering an additional request to the back end. This is an experimental feature.
Full Changelog: v2.0.3...v3.0.0
Initialize previously dynamically created PHP properties
Dynamically created PHP properties are deprecated in PHP 8.2
Use 0 for default ttl
Use 0 rather than null for default ttl, to avoid a deprecation notice on passing null to type int for ttl.
Typo fix
Fixed a typo in the composer.json file of the previous commit