Distkv is a type-oriented database system. There are several concepts in Distkv that looks like the basic collections.
We have 6 concepts string
, list
, set
, dict
, sortedlist
and table
yet.
In this section, you will learn the grammer of these basic concepts in Distkv, and will learn how to use these concepts as examples as well.
Put a string value into Distkv store.
str.put key value
example:
$ dkv-cli > str.put k1 v1
$ dkv-cli > ok
Get a string value from Distkv store.
str.get key
example:
dkv-cli > str.get k1
dkv-cli > v1
Drop a string value from Distkv store.
str.drop key
example:
dkv-cli > str.drop k1
dkv-cli > ok
dkv-cli > str.get k1
dkv-cli > errorCode: A100;
Detail: The key k1 is not found in the store.
Put a list into Distkv store.
list.put key value1 [value2 [value3 [...]]]
example:
dkv-cli > list.put k1 v1 v2 v3
dkv-cli > ok
Get a list from Distkv store.
list.get key
example:
dkv-cli > list.get k1
dkv-cli > [v1, v2, v3]
Get a range of items of the list from Distkv store.
# Note that it's excluding the `end_index`.
list.get key from_index end_index
example:
dkv-cli > list.get k1 0 2
dkv-cli > [v1, v2]
Get one item of the list from Distkv store.
list.get key index
example:
dkv-cli > list.get k1 1
dkv-cli > v1
Put items into the front of the list.
list.lput key value1 [value2 [value3 [...]]]
example:
dkv-cli > list.lput "k1" "v4" "v5" "v6"
dkv-cli > ok
Put items into the back of the list.
list.rput key value1 [value2 [value3 [...]]]
example:
dkv-cli > list.rput "k1" "v7"
dkv-cli > ok
Remove item from the list with the given index.
list.ldel key index
example:
dkv-cli > list.ldel "k1" 2
dkv-cli > ok
Remove item from the back of the list with the given back index.
list.rdel key back_index
If the list is [1, 2, 3] and the given number is 0, item 3
will be removed.
example:
dkv-cli > list.rdel "k1" 2
dkv-cli > ok
Get the list from Distkv store.
list.get key
example:
dkv-cli > list.get "k1"
dkv-cli > ["v6", "v1", "v2"]
dkv-cli > set.put "k1" "v1" "v2" "v3"
dkv-cli > ok
dkv-cli > set.get "k1"
dkv-cli > {"v1", "v2", "v3"}
dkv-cli > set.del "k1" "v1"
dkv-cli > ok
dkv-cli > set.get "k1"
dkv-cli > {"v2", "v3"}
dkv-cli > set.exists "k1" "v2"
dkv-cli > true
dkv-cli > set.exists "k1" "v4"
dkv-cli > false
dkv-cli > set.drop "k1"
dkv-cli > ok
dkv-cli > dict.put "dict1" "k1" "v1" "k2" "v2"
dkv-cli > ok
dkv-cli > dict.get "dict1"
dkv-cli > { "k1" : "v1", "k2" : "v2"}
dkv-cli > dict.get "dict1" "k1"
dkv-cli > "v1"
dkv-cli > dict.get "dict1" "k1"
dkv-cli > "v1"
dkv-cli > dict.del "dict1" "k1"
dkv-cli > ok
dkv-cli > dict.pop "dict1" "k2"
dkv-cli > "v2"
dkv-cli > dict.get "dict1"
dkv-cli > []
dkv-cli > dict.drop "dict1"
dkv-cli > ok
dkv-cli > slist.put "slist1" "m12" 12 "m2" 2 "m5" 5
dkv-cli > ok
dkv-cli > slist.top "slist1" 2
dkv-cli > [("m12", 12), ("m5", 5)]
dkv-cli > slist.incrScore "slist1" "m5" 10
dkv-cli > ok
dkv-cli > slist.putMember "slist1" "m9" 13
dkv-cli > ok
dkv-cli > slist.removeMember "slist1" "m9"
dkv-cli > ok
dkv-cli > slist.top "slist1" 2
dkv-cli > [("m5", 15), ("m12", 12)]
dkv-cli > slist.getMember "slist1" "m12"
dkv-cli > ("m12", 12), 2nd
dkv-cli > slist.drop "slist1"
dkv-cli > ok
mytables.sc
table TaskTable {
[p]task_id: string;
[i]driver_id: string;
task_name: string;
return_num: int;
arguments: [string];
}
table DriverTable {
[p]driver_id: string;
driver_name: string;
actor_num: int;
};
> dkv-cli -p 12344 # connect to distkv server
> create TaskTable, DriverTable from mytables.sc
> TaskTable.add "00001", "22222", "my_task", 3, ["1", "2"]
< ok
> TaskTable.add "00002", "99999", "my_task", 3, ["1", "2"]
< ok
> TaskTable.add "00003", "22222", "my_task", 3, ["1", "2"]
< ok
> DriverTable.add "22222", "my_driver", 10
< ok
> TaskTable.query (*) when driver_id == "22222"
<
< task_id driver_id task_name num_return arguments
< "00001" "22222" "my_task" 3 ["1", "2"]
< "00003" "22222" "my_task" 3 ["1", "2"]
< 2 records