Skip to content

Instantly share code, notes, and snippets.

@antirez
Created July 27, 2010 11:16
Show Gist options
  • Save antirez/492079 to your computer and use it in GitHub Desktop.
Save antirez/492079 to your computer and use it in GitHub Desktop.
source redis.tcl
proc dump r {
set o {}
foreach k [lsort [$r keys *]] {
set type [$r type $k]
append o [csvstring $k] , [csvstring $type] ,
switch $type {
string {
append o [csvstring [$r get $k]] "\n"
}
list {
foreach e [$r lrange $k 0 -1] {
append o [csvstring $e] ,
}
append o "\n"
}
set {
foreach e [lsort [$r smembers $k]] {
append o [csvstring $e] ,
}
append o "\n"
}
zset {
foreach e [$r zrange $k 0 -1 withscores] {
append o [csvstring $e] ,
}
append o "\n"
}
hash {
set fields [$r hgetall $k]
set newfields {}
foreach {k v} $fields {
lappend newfields [list $k $v]
}
set fields [lsort -index 0 $newfields]
foreach kv $fields {
append o [csvstring [lindex $kv 0]] ,
append o [csvstring [lindex $kv 1]] ,
}
append o "\n"
}
}
}
return $o
}
proc csvstring s {
return "\"$s\""
}
set r [redis]
puts -nonewline [dump $r]
### Example output:
"empty","string",""
"myhash","hash","age","33","name","antirez",
"mylist","list","c","b","a",
"myset","set","1000","baz","foo",
"mystring","string","bar"
"myzset","zset","first","10","second","20","third","30",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment