Si l'actualité a un identifiant ou un identifiant unique. Vous pouvez envisager d'utiliser le type de collection Redis. Et le caractère unique de la collection évite les problèmes d’ajout en double !
redis.sadd('personmark:userID',newsID);//Ajouter un élément à la collection utilisateur
redis.smembers('personmark:userID');//Obtenir tous les identifiants d'actualité collectés par l'utilisateur en même temps
Utiliser l'ensemble trié zset
la clé est l'identifiant de l'utilisateur
le membre est l'identifiant unique de l'actualité
Le score est l'incrément de date à partir de la veille (par exemple, à partir du 1-1-2015, le score d'aujourd'hui est de 155 ?) ; une fois que vous avez le score, vous pouvez le sortir sans trier et l'afficher directement ;
zadd(clé, score, membre):Ajouter des nouvelles
zrank(key, member) : renvoie selon le score de petit à grand, c'est-à-dire que les nouvelles collectées sont triées par date du nouveau à l'ancien ;
zrangebyscore(key, min, max) : renvoie une collection de scores du début à la fin, utilisée pour réaliser l'affichage des actualités en tournant les pages
clé : news_fav_uid
valeur : une collection d'identifiants d'actualités (tableau)
où uid est l'ID utilisateur.
$news_ids = tableau(1024,1025,1026);
echo json_encode ($ news_ids);
Peu importe que vous utilisiez Memcached/Redis/MySQL, vous pouvez le stocker comme ceci.
array_push pousse la nouvelle collection à la fin du tableau $news_ids.
Si vous souhaitez trier par heure, vous n'avez besoin que de json_decode pour décoder, array_reverse pour retourner le tableau, puis de foreach sortie.
La réponse au 1er étage est très bonne, mais je veux juste ajouter qu'il n'est pas nécessaire d'utiliser redis comme cache ici, utilisez-le simplement comme stockage de données, car redis est aussi une base de données
Si l'actualité a un identifiant ou un identifiant unique. Vous pouvez envisager d'utiliser le type de collection Redis. Et le caractère unique de la collection évite les problèmes d’ajout en double !
redis.sadd('personmark:userID',newsID);//Ajouter un élément à la collection utilisateur
redis.smembers('personmark:userID');//Obtenir tous les identifiants d'actualité collectés par l'utilisateur en même temps
Utiliser l'ensemble trié zset
;la clé est l'identifiant de l'utilisateur
le membre est l'identifiant unique de l'actualité
Le score est l'incrément de date à partir de la veille (par exemple, à partir du 1-1-2015, le score d'aujourd'hui est de 155 ?) ; une fois que vous avez le score, vous pouvez le sortir sans trier et l'afficher directement
; zadd(clé, score, membre):Ajouter des nouvelles
zrank(key, member) : renvoie selon le score de petit à grand, c'est-à-dire que les nouvelles collectées sont triées par date du nouveau à l'ancien
; zrangebyscore(key, min, max) : renvoie une collection de scores du début à la fin, utilisée pour réaliser l'affichage des actualités en tournant les pages
clé : news_fav_uid
valeur : une collection d'identifiants d'actualités (tableau)
où uid est l'ID utilisateur.
$news_ids = tableau(1024,1025,1026);
echo json_encode ($ news_ids);
Peu importe que vous utilisiez Memcached/Redis/MySQL, vous pouvez le stocker comme ceci.
array_push pousse la nouvelle collection à la fin du tableau $news_ids.
Si vous souhaitez trier par heure, vous n'avez besoin que de json_decode pour décoder, array_reverse pour retourner le tableau, puis de foreach sortie.
La réponse au 1er étage est très bonne, mais je veux juste ajouter qu'il n'est pas nécessaire d'utiliser redis comme cache ici, utilisez-le simplement comme stockage de données, car redis est aussi une base de données