Наверное, потому что технически это намного сложнее и мало кому нужно.Кто знает почему практически во всех современных реализациях тегов/неймспейсов/иерархии для кеша есть добавить/изменить/удалить теги для записи, есть удалить все записи с тегом, но нет ни получения списка id записей с тегом, ни получения самих записей с данным тегом?
так и есть. И я понимаю насчет "надежности" и "эффективности" такого подхода.Я предположу, что в той реализации, о которой ты говоришь, было что-то типа карты «имя тега -> список ключей», но это ненадёжная и неэффективная реализация.
Во втором абзаце я объяснил почему: у тебя нет никакой карты «имя тега -> список ключей», инвалидация происходит неявно и сам тег про записи ничего не знает. Строго говоря, в описанной реализации нет такой операции, как «удаление по тегу». Это выглядит, как будто записи были удалены, но по факту просто сменились ключи.Вопрос был больше о существующих реализациях - почему если и делают тегирование, то есть только удаление по тегу, но нет получения списка id по тегу или получения самих тегов? Ведь надежность и эффективность в обоих случаях полностью одинаковая (учитывая что внутри при удалении так и происходит, получение списка id, а потом удаление).
На том же редисе и на стороне редиса теги можно реализовать атомарно и довольно стабильно.Я предположу, что в той реализации, о которой ты говоришь, было что-то типа карты «имя тега -> список ключей», но это ненадёжная и неэффективная реализация.
довольно стабильно.
так такое везде написано, где есть интерфейс тегирования!clearByTags должен просто удалять (или инкрементить) теги, если там не так - значит, там тоже написана ерунда.
Даже если clearByTags делает что-то аналогичное (реализация с картой), то метод getIdsMatchingTags никому не нужен и провоцирует на плохие практики.Учитывая что внутри clearByTags делает операции аналогичные getIdsMatchingTags?
Потому что этого списка нигде нет.вот потому и стал вопрос почему есть очистка по тегу, но нет получить список ключей по тегу.
Теги - вообще не для этого. Теги - для инвалидации.мне нужна более менее независимый компонент для работы с быстрыми nosql хранилищами поддерживающими получение ключей по маске.
В зависимости от конкретного бекенда это или wilcard или regexp поиск. Например, редис - это wildcard, apcu - regexpЧто такое "маска"? Префикс?