Вы используете тип хеша для хранения отдельной информации, и вы используете hgetall для ее получения, поэтому я предполагаю, что вы еще не знакомы с типами данных redis. Итак, сначала позвольте мне кратко объяснить три типа данных, о которых я буду говорить (все типы можно найти в документации здесь https://redis.io/topics/data-types-intro ):
set(key, value)
и get(key, value)
hset(key, field, value)
, hget(key, field)
, hgetall(key)
sadd(key, member)
, sismember(key, member)
, smembers(key)
[ 1121] Если вы собираетесь сохранить только онлайн-статус, было бы лучше использовать строковый тип с set, get и del (так как обычно большинство пользователей в автономном режиме большую часть времени, удалите их и сэкономьте место). Для этого простого ключа / значения redis на самом деле даже лучше, чем старый добрый memcache.
Если вы намереваетесь хранить больше пользовательских атрибутов (настроение, девиз, аватар ...), вам следует переименовать его в «userdata: userID», проверить с помощью hget("userdata:userID", "status")
и использовать hgetall
только для получения всех атрибуты.
Другим подходом может быть сохранение всех пользователей в наборе: sadd('users:online', userID)
и проверка с помощью sismember('users:online', userID)
или получение всех онлайн-пользователей с помощью smembers('users:online')
. Предположим, вы храните всех друзей в другом наборе friends:userID
, вы можете захватить всех онлайн-друзей пользователя с помощью одной команды пересечения sinter('friends:userID', 'users:online')
- довольно мило и элегантно, IMHO, но это сложно с более различными состояниями и не работает с Redis-кластер.
1124 Я бы предпочел подход SET. Несколько хетгов тоже подойдут, пока не возникнут проблемы из-за одного парня (он всегда один), который имеет тысячи контактов и постоянно обновляется. В этот момент вы все еще можете ввести некоторые ограничения дружбы или кеширования.
Нет такой функции XPath или расширения XSLT функции XPath, чтобы сделать это в XSLT v1/XPath v1.
для там довольно возможно не быть никаким файлом, и даже если нет никакой причины механизма XSLT, чтобы иметь то имя файла (рассмотрите загрузку содержания файла в буфер, парсинг буфера в DOM и затем передачу DOM к процессору XSLT).
необходимо будет передать имя файла в процессор, чтобы быть доступными в качестве параметра в преобразовании.
base-uri()
стандартная функция XPath 2.0 , поэтому когда рабочий XSLT 1.0 эта функция будет недоступен.
В XSLT 1.0 имя файла (какой?) может быть передан в качестве параметра для преобразования.
Делают примечание , что не всегда возможно произвести имя файла для таблицы стилей или для XML-документа - или или оба могут находиться в памяти без связанного файла.
Это не ясно из проблемы, какое имя файла должно быть произведено.
Вот то, как найти имена файлов в XPath 2.0 / XSLT 2.0:
имя файла текущего документа:
base-uri()
имя файла текущего модуля таблицы стилей:
base-uri(document(''))