Система комментариев с использованием Redis Database System - PullRequest
0 голосов
/ 11 июля 2011

Я пытаюсь создать систему комментариев, используя базу данных Redis, в настоящее время я использую хэши для хранения данных комментариев, но проблема, с которой я сталкиваюсь, заключается в том, что после 10 или 12 комментариев комментарии теряют свой порядок и начинают появляться случайным образом, любой знаю, какой тип данных следует использовать для построения системы комментирования с использованием Redis, в настоящее время мои хэши имеют вид.

postid: комментарии, комментарии: идентификатор пользователя "Testcomment"

Спасибо, любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

Хеши настроены для быстрого доступа по ключу, а не поиска по порядку. Если вам нужны элементы в определенном порядке, попробуйте список или отсортированный набор.

Причиной, по которой это работает с первого взгляда, является оптимизация для небольших наборов - когда у вас есть только небольшое количество элементов, список является наиболее эффективной структурой, так что именно это Redis использует внутри. Когда вы получаете больше элементов, для эффективного запроса требуется фактическая хэш-карта, и повторная перегруппировка данных переупорядочивает их так, чтобы они упорядочивались по хэшу, а не по порядку вставки.

0 голосов
/ 12 июля 2011

В моем веб-приложении я использую такой формат.

(appname):(postid):(comment id) - The hash of the posts
(appname):(postid):count - The latest comment id

И затем я запрашиваю ключ (appname) :( postid): count, чтобы узнать, сколько раз я должен запустить цикл, который получает содержимое хеша (appname) :( postid) :( id комментария).

Пример кода

$c = $redis->get('(appname):(postid):count');
for($i = 0; $i<$c; $i++) {
    var_dump($redis->hgetall('(appname):(postid):'.$i));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...