Maison  >  Article  >  développement back-end  >  go-redis Eval func renvoie le type de valeur lorsque le script Lua renvoie un tableau

go-redis Eval func renvoie le type de valeur lorsque le script Lua renvoie un tableau

WBOY
WBOYavant
2024-02-09 08:51:33520parcourir

go-redis Eval func返回值类型,当Lua脚本返回数组时

L'éditeur PHP Xigua est là pour vous présenter le problème du type de valeur de retour de la fonction Eval dans la bibliothèque go-redis. Lorsque vous utilisez un script Lua pour exécuter la fonction Eval, le script renvoie parfois un tableau. Alors dans la bibliothèque go-redis, quel est le type de cette valeur de retour ? Répondons à cette question en détail ci-dessous.

Contenu de la question

Lorsqu'un script Lua renvoie un tableau de table lors d'un appel eval, comment puis-je le convertir en chaîne [] en go ?

redis cli renvoie des réponses par lots au format suivant.

1) val1
2) val2
La fonction d'évaluation

go-redis renverra le lot d'entrées sous la forme

["val1", "val2"] 

Solution

redis renvoie le tableau de table Lua sous forme de tableau resp2. Le client go mappera ensuite cette réponse à un type go natif. go-redis La documentation pertinente peut être trouvée ici : types Lua et Go.

En termes simples, les tables Lua sont mappées aux réponses groupées, tandis que les clients Go les mappent aux fragments d'interface : []interface{}.

go-redis 脚本 runeval 都返回 *cmd。您可以使用此类型的方法来检索 go 类型的输出。 result 给出 (interface{}, error),您可以键入断言任何您想要的内容,否则 stringslice 是一个方便的 getter,可以立即检索 []string Les deux scripts run et eval renvoient *cmd. Vous pouvez utiliser ce type de méthode pour récupérer la sortie de type go. result Étant donné (interface{}, error), vous pouvez taper assert ce que vous voulez, sinon stringslice

est un getter pratique qui peut récupérer instantanément []string.

Donc ça ressemble à :

script := redis.NewScript(`
  local foo = {"val1", "val2"}
  return foo
`)

cmd := script.Run(/* parameters */)

i, err := cmd.Result() // (interface, error)
// or
ss, err := cmd.StringSlice() // ([]string, error)
Si les valeurs ne sont pas réellement toutes des chaînes, utilisez slice 获取 []interface{}slice

pour obtenir une 🎜 tranche, puis inspectez les éléments individuellement. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer