Я делаю небольшой проект с использованием redis и узла js - redis client 'node_redis'. Проблема заключается в том, что для получения значения ключа существует другая функция get, например, для типа string и integer существует client.get, для типа массива есть client.lrange() и т. Д. Итак, как определить, какую функцию использовать для получить значение, если искомый тип значения неизвестен, существует ли способ идентифицировать тип значения.Как узнать тип значения заданного ключа в redis в узле js
0
A
ответ
2
Используйте команду TYPE.
обещаниями:
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()
})
С обратных вызовов:
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
Обычно ваше приложение должно заранее знать тип значения, к которому он обращается, используя заданное имя ключа. Тем не менее, есть Redis TYPE
, который вы можете использовать для проверки типа данного ключа.
есть способ сделать это с синхронизацией? например: var type = client.type ('foo'); –
@MikeBrianOlivera Не знаю, что я знаю, существует несколько общих способов превратить асинхронный апикс в синхронизацию, но вы, как правило, не должны использовать методы синхронизации, поскольку они будут блокировать процесс при доступе к redis. – Matt
Можете ли вы помочь мне с этим, пожалуйста, это для режима tesing. Я пробовал ваш код и возвращаю None :( –