Redis - A simple syntax to describe how data stored

在使用 redis 時,資料怎樣在 redis 內存放常會需要設計,或是需要拿出來跟團隊溝通討論。用畫圖表述或是列表有點不方便,redis 資料結構豐富也不是很好表示。


這邊筆者嘗試定義簡易的表示方式。


String 型態表示方式…

$string-key => $string-value


Hash 型態表示方式…(設計概念為 Dictionary)

$hash-key => {
    {$field-key, $field-value},
    ...
}


List 型態表示方式…(設計概念為 Array)

$list-key => [
    $list-value,
    ...
]


Set 型態表示方式…(設計概念為 Set)

$set-key => {
    $set-value,
    ...
}


SortedSet 表示方式…(設計概念為 Tuple set)

$sorted-set-key => {
    ($score, $set-value),
    ...
}


像是 Redis reliable queue 那篇的設計…


用這樣的表示方式設計就會變成這樣:

pending => [$data-id, ...]
working:$worker-id => [$data-id, ...]
value => {
    {$data-id, $data},
    ...
}


使用情境的描述就會像下面這樣:

pending => [6, 5]
working:1 => [2, 1]
working:2 => [4, 3]
value => {
    {1, "{\"Name\": \"Larry\"}"},
    {2, "{\"Name\": \"Tom\"}"},
    {3, "{\"Name\": \"Bob\"}"},
    {4, "{\"Name\": \"John\"}"},
    {5, "{\"Name\": \"Ryan\"}"},
    {6, "{\"Name\": \"Andrew\"}"},
}