Maison > Questions et réponses > le corps du texte
巴扎黑2017-04-22 09:01:31
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
巴扎黑2017-04-22 09:01:31
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
大家讲道理2017-04-22 09:01:31
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.
阿神2017-04-22 09:01:31
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