2017-02-13 2 views
0

Je fais un petit projet en utilisant Redis et le client js-redis 'node_redis'. Le problème est que, pour obtenir la valeur de la clé, il y a différentes fonctions get comme pour le type chaîne et entier il y a client.get, pour le type tableau il y a client.lrange() etc Alors comment identifier la fonction à utiliser obtenir la valeur si le type de valeur souhaité n'est pas connu, existe-t-il un moyen d'identifier le type de valeur.Comment savoir le type de valeur de la clé donnée dans redis dans le nœud js

Répondre

2

Utilisez la commande TYPE.

avec des promesses:

const Promise = require('bluebird') 
const redis = Promise.promisifyAll(require('redis')) 
const client = redis.createClient() 
client.on("error", err => console.log("Error " + err)) 

client.typeAsync('foo').then(res => { 
    console.log('type: "%s"', res) 
}) 
.finally(()=> { 
    client.quit() 
}) 

Avec callbacks:

const redis = require('redis') 
const client = redis.createClient() 
client.on("error", err => console.log("Error: %s", err)) 

client.type('foo', (err, res) =>{ 
    if (err) return console.log('Error: %s', err) 
    console.log('type: "%s"', res) 
    client.quit() 
}) 
+0

est-il un moyen de le faire avec la synchronisation? Par exemple: var type = client.type ('foo'); –

+0

@MikeBrianOlivera Je ne suis pas au courant, il y a quelques façons génériques de synchroniser les api asynchrones mais vous ne devriez généralement pas utiliser les méthodes de synchronisation car elles bloqueraient le processus lors de l'accès à redis. – Matt

+0

pourriez-vous m'aider s'il vous plaît, c'est pour le mode de test. J'ai essayé votre code et de retour Aucun :( –

0

Habituellement, votre application doit connaître à l'avance le type de valeur à laquelle elle accède en utilisant un nom de clé donné. Cela dit, il y a le Redis TYPE que vous pouvez utiliser pour inspecter le type d'une clé donnée.