Situatie
Adesea, doriți să exportați date din redis ca csv. Redis-cli are un flag –csv, dar funcționează numai dacă doriți să exportați o singură cheie. Dar cu puțină magie în linia de comandă, puteți exporta orice număr de chei ca format CSV.
Solutie
Acest script va exporta câmpurile id, numele afișat, reputația și locația pentru toate hashe-urile începând cu utilizatori:*
redis-cli –scan –pattern users:* |\ grep -e “^users:[^:]*$” |\ awk ‘{print “hmget ” $0 ” id display_name reputation location”}’ |\ redis-cli –csv > users.csv |
Utilizarea tastelor Scan to Select
Primul pas este să utilizați redis-cli cu steagurile –scan și –pattern pentru a selecta cheile de interes. Deci, pentru a selecta cheile care corespund utilizatorilor:*, veți rula comanda redis-cli –scan –pattern users:*.
Rețineți că redis permite numai modele de stil glob. Deci, utilizatorii:* vor potrivi utilizatori:1234 și, de asemenea, utilizatori:1234:favoriți. Dacă doriți mai mult control, îl puteți continua cu un grep și un regex.
redis-cli –scan –pattern utilizatori:* | grep -e ‘^utilizatori:[^:]*$’ |
Folosind AWK pentru a rula comenzi Redis
Pentru fiecare cheie selectată, trebuie să rulăm o comandă redis pentru a prelua datele pentru acea cheie. În cazul nostru, dorim să preluăm câmpuri dintr-un hash, așa că folosim comanda hmget. $0 din scriptul awk se referă la cheia pe care am selectat-o anterior utilizând scanarea.
Ieșirea scriptului awk este transmisă către redis-cli. Fiecare comandă este executată, iar rezultatul este returnat ca CSV din cauza flagului –csv.
Leave A Comment?