Peut utiliser plusieurs stockages HashSet. Chaque Weibo n'est qu'une sous-clé dans le HashSet. Vous pouvez utiliser la commande HIncrBy pour augmenter le nombre de likes. Divisez le TID en blocs afin que les clés de chaque HashSet ne dépassent pas 100. La documentation officielle indique que HashSet utilise le stockage et l'analyse linéaires lorsque les éléments internes sont inférieurs à 100, ce qui est plus efficace et économise la mémoire par rapport à la structure arborescente à la même échelle de données.
Par exemple : Weibo avec TID 123456 existe dans le HashSet de z:1234, et sa clé est 56. En supposant que le dernier Weibo soit également très actif, dans la plupart des cas, seuls quelques HashSets sont appelés, ce qui est très convivial pour le cache du processeur.
Si vous souhaitez gérer les utilisateurs qui l'aiment, vous pouvez personnaliser le format des données. Lorsque le nombre d'utilisateurs est petit, intégrez la liste complète des utilisateurs dans le champ de valeur de HashSet. Par exemple, lorsqu'il y a plus de 50 utilisateurs, séparez-les en un ensemble et enregistrez la clé Set dans le HashSet. Exemple :
Étant donné que la plupart des utilisateurs de Weibo ont moins de likes, HashSet peut enregistrer beaucoup de clés d'espace globales (les clés globales consomment plus de mémoire que les clés HashSet).
Réponse à propos de la @vente de sous-vêtements et de la connexion en ligne :
Si le tri rapide sur place est utilisé, l'efficacité du tri manuel de 50 utilisateurs est très élevée, car à cette échelle de données, la convivialité du cache apportée par le stockage compact des données est bien meilleure que l'amélioration apportée par Redis ZSet par rapport au tri manuel. Une fois les utilisateurs qui l'aiment promus, ils s'adapteront automatiquement à set ou zset pour garantir la complexité temporelle de l'algorithme. Si vous êtes toujours préoccupé par l'efficacité, vous pouvez réécrire la liste UID triée en une valeur dans le HashSet et l'utiliser directement s'il n'y a aucun changement de données à l'avenir.
L'utilisation de set ou de zset dépend toujours des besoins de l'affiche. La complexité de l'ajout d'un membre à set est O(1) et à zset est O(log N), mais set n'a pas de fonction de tri.
Il n'est pas recommandé que LS utilise HASH pour stocker des données similaires car il n'y a aucun moyen de trier (si nécessaire. Je pense que cela doit être nécessaire)
.
C'est ainsi que nous le gérons actuellement.
Vous pouvez utiliser les ensembles commandés par ZSET pour le stockage. Théoriquement, dans un ZSET, il n'y a pas de nombre inférieur à 100 000. En d'autres termes, le nombre de personnes qui aiment un Weibo est inférieur à 100 000 (c'est impossible).
Est-il nécessaire de sauvegarder chaque uid, ou pensez-vous que c'est ce que fait Sina Weibo ? Dans la plupart des cas, tout le monde ne prête attention qu'à un nombre. Si tel est le cas, utilisez simplement un nombre pour stocker {tid->count}
.
Si vous devez enregistrer, il est recommandé d'utiliser {tid->set(uid)} pour enregistrer
Une optimisation est que vous pouvez définir un seuil. Par exemple, si plus de 100 personnes l'aiment, vous n'y ajouterez plus rien, mais ajouterez simplement un nombre (bien sûr, vous devez en enregistrer un autre {. tid-> ;count}). Parce qu'il y a plus de 10 000 likes sur Weibo, personne ne revient cliquer sur tous ceux qui l'aiment un par un. .
Peut utiliser plusieurs stockages HashSet. Chaque Weibo n'est qu'une sous-clé dans le HashSet. Vous pouvez utiliser la commande HIncrBy pour augmenter le nombre de likes. Divisez le TID en blocs afin que les clés de chaque HashSet ne dépassent pas 100. La documentation officielle indique que HashSet utilise le stockage et l'analyse linéaires lorsque les éléments internes sont inférieurs à 100, ce qui est plus efficace et économise la mémoire par rapport à la structure arborescente à la même échelle de données.
Par exemple : Weibo avec TID
123456
existe dans le HashSet dez:1234
, et sa clé est 56. En supposant que le dernier Weibo soit également très actif, dans la plupart des cas, seuls quelques HashSets sont appelés, ce qui est très convivial pour le cache du processeur.Si vous souhaitez gérer les utilisateurs qui l'aiment, vous pouvez personnaliser le format des données. Lorsque le nombre d'utilisateurs est petit, intégrez la liste complète des utilisateurs dans le champ de valeur de HashSet. Par exemple, lorsqu'il y a plus de 50 utilisateurs, séparez-les en un ensemble et enregistrez la clé Set dans le HashSet. Exemple :
Étant donné que la plupart des utilisateurs de Weibo ont moins de likes, HashSet peut enregistrer beaucoup de clés d'espace globales (les clés globales consomment plus de mémoire que les clés HashSet).
Réponse à propos de la @vente de sous-vêtements et de la connexion en ligne :
Si le tri rapide sur place est utilisé, l'efficacité du tri manuel de 50 utilisateurs est très élevée, car à cette échelle de données, la convivialité du cache apportée par le stockage compact des données est bien meilleure que l'amélioration apportée par Redis ZSet par rapport au tri manuel. Une fois les utilisateurs qui l'aiment promus, ils s'adapteront automatiquement à set ou zset pour garantir la complexité temporelle de l'algorithme. Si vous êtes toujours préoccupé par l'efficacité, vous pouvez réécrire la liste UID triée en une valeur dans le HashSet et l'utiliser directement s'il n'y a aucun changement de données à l'avenir.
L'utilisation de set ou de zset dépend toujours des besoins de l'affiche. La complexité de l'ajout d'un membre à set est O(1) et à zset est O(log N), mais set n'a pas de fonction de tri.
Il n'est pas recommandé que LS utilise HASH pour stocker des données similaires car il n'y a aucun moyen de trier (si nécessaire. Je pense que cela doit être nécessaire)
.C'est ainsi que nous le gérons actuellement.
Vous pouvez utiliser les ensembles commandés par ZSET pour le stockage. Théoriquement, dans un ZSET, il n'y a pas de nombre inférieur à 100 000. En d'autres termes, le nombre de personnes qui aiment un Weibo est inférieur à 100 000 (c'est impossible).
Hmm, PS encore!!!. c:<ID du commentaire> Comment l'associer aux données Weibo comme ceci :
t:$tid:comments:scores (ID de commentaire ZSET timestmap);Est-il nécessaire de sauvegarder chaque uid, ou pensez-vous que c'est ce que fait Sina Weibo ? Dans la plupart des cas, tout le monde ne prête attention qu'à un nombre. Si tel est le cas, utilisez simplement un nombre pour stocker {tid->count}
Si vous devez enregistrer, il est recommandé d'utiliser {tid->set(uid)} pour enregistrer
Une optimisation est que vous pouvez définir un seuil. Par exemple, si plus de 100 personnes l'aiment, vous n'y ajouterez plus rien, mais ajouterez simplement un nombre (bien sûr, vous devez en enregistrer un autre {. tid-> ;count}). Parce qu'il y a plus de 10 000 likes sur Weibo, personne ne revient cliquer sur tous ceux qui l'aiment un par un. .