Je prévois d'utiliser Redis comme ma base de données de 2ème classe pour mon API PHP (Predis pour PHP & Redis connexion), ma base de données principale est MySQL. Je suis nouveau et je me demande si je suis sur la bonne voie ou si je me trompe complètement. Je vais utiliser Redis pour toutes les requêtes "SELECT" ou Retrieval au lieu de l'obtenir depuis MySQL. Voici l'exemple de flux.Un bon moyen de mettre à jour un enregistrement spécifique sur le LIST/SET dans Redis
J'ai un utilisateur qui a plusieurs enregistrements sur l'autre table (1: plusieurs). TableA contient tous les utilisateurs et TableB contient tous les enregistrements d'expérience de tous les utilisateurs.
**TableA**
UserID - 1234
UserID - 4567
UserID - 7890
-------------------------------------------------------
**TableB**
ExperienceID - 1 | UserID - 1234 | Experience - Waiter
ExperienceID - 2 | UserID - 1234 | Experience - Chef
ExperienceID - 3 | UserID - 4567 | Experience - Developer
ExperienceID - 4 | UserID - 4567 | Experience - Technician
ExperienceID - 5 | UserID - 4567 | Experience - Support
ExperienceID - 6 | UserID - 7890 | Experience - Engineer
ExperienceID - 7 | UserID - 7890 | Experience - Engineer
ExperienceID - 8 | UserID - 7890 | Experience - Draftsman
- Enregistrer de nouvelles expériences sur MySQL et une fois le succès, il poussera la même expérience sur Redis (le format Redis).
- Get/retreive tous les enregistrements de Redis au lieu de MySQL
- Mise à jour de l'expérience sur MySQL et une fois le succès, il mettra à jour l'expérience spécifique Redis --->Je ne sais pas comment faire cela sur Redis sans boucle sur PHP qui n'est pas une bonne idée si je énorme liste d'enregistrements :(
Voici ma mise en page Redis.
uid:1234:experience
uid:4567:experience
uid:7890:experience
a l'intérieur de l'expérience enregistrement namespace
I utilisé SADD avec des données codées JSON pour définir
$userExperience1 = array(
'id' => 1,
'user_id' => 1234,
'experience' => 'Waiter'
);
$userExperience2 = array(
'id' => 2,
'user_id' => 1234,
'experience' => 'Chef'
);
$redis->sadd('uid:' . $userId . ':experience', json_encode($userExperience1));
$redis->sadd('uid:' . $userId . ':experience', json_encode($userExperience2));
J'ai aussi essayé d'utiliser LISTE
$redis->rpush('uid:' . $userId . ':experience', json_encode($userExperience1));
$redis->rpush('uid:' . $userId . ':experience', json_encode($userExperience2));
Mais je ne sais pas la bonne façon de mettre à jour enregistrement spécifique sur Redis, comme je veux pour mettre à jour uniquement l'expérience "Waiter" de l'utilisateur 1234.
Une suggestion ou un conseil? Merci les gars.
Cool. Merci @Alex Blex. c'est une bonne façon. $ redis-> lset ('uid:'. $ userId. ': expérience', $ listId-1, json_encode ($ newUserExperience)); Je mets "-1" pour obtenir le bon index. Pour la suppression, pensez-vous qu'il est préférable de faire une suppression douce? ou avez-vous une suggestion sur la façon de supprimer un enregistrement spécifique sur la liste. – jamcoder
Merci, mis à jour la réponse. Oui, la suppression douce est le moyen le plus simple. Si vous en avez beaucoup, vous devrez peut-être "recharger" l'ensemble après un certain nombre d'expériences effacées. –
l'ai eu. Je vais faire l'approche de suppression douce. merci @Alex Blex. – jamcoder