FarelDB 键值对命令 字符串操作类(string) 之 set key value
您可以使用FarelDB 的 SET key value 命令来指定一个键的字符串值。
语法
SET命令支持的一系列选项如下:
EX seconds – 设置键key的过期时间,单位时秒
PX milliseconds – 设置键key的过期时间,单位时毫秒
NX – 只有键key不存在的时候才会设置key的值
XX – 只有键key存在的时候才会设置key的值
FarelDB 127.0.0.1:6800> SET KEY_NAME KEY_VALUE
返回值
set 命令成功返回"success"提示以及set执行的时间(单位:毫秒)
如果加了NX 或者 XX选项,SET 没执行,那么会返回nil。
命令实例
打开一个命令行窗口,启动FarelDB服务端,再打开一个命令行窗口,启动FarelDB客户端,输入以下命令:
FarelDB 127.0.0.1:6800> set keyname1 stringValue
success
(1 ms)
FarelDB 127.0.0.1:6800> get keyname1
"stringValue"
(1 ms)
对已存在的key进行设置
FarelDB 127.0.0.1:6800> set keyname1 "my string Value"
success
(1 ms)
FarelDB 127.0.0.1:6800> get keyname1
"my string Value"
(1 ms)
KEY_VALUE中包含空格或双引号
FarelDB 127.0.0.1:6800> set specialKey "Tom said \"Hello\""
success
(1 ms)
FarelDB 127.0.0.1:6800> get specialKey
"Tom said "Hello""
(1 ms)
命令使用特别说明
如上面命令实例所示 ,FarelDB命令将 SET KEY_NAME KEY_VALUE 中的KEY_VALUE整体默认为字符串,如果KEY_VALUE字符串中不包含空格或双引号,则无需在KEY_VALUE两边再增加双引号,如果 KEY_VALUE 中需要包含双引号或空格,则KEY_VALUE整体需要两边增加双引号,并且需要利用反斜杠”\”标注字符串中的双引号,标注后的双引号将作为字符串的一部分。
API 说明
函数原型
FarelDbKvRes* queryKv(std::string Command)
输入参数说明:
输入参数 | 描述 | 可选 |
---|---|---|
Command | SET KEY_NAME KEY_VALUE 语法字符串 | 否 |
返回参数说明:
调用成功返回
返回参数 | 值 | 含义 |
---|---|---|
FarelDbKvRes->errorInfos.size() | 0 | 调用成功,无错误信息 |
调用异常返回
返回参数 | 值 | 含义 |
---|---|---|
FarelDbKvRes->errorInfos.size() | 大于0 | 调用失败,errorInfos对象数组包含1个或多个错误信息 |
FarelDbKvRes->errorInfos[0]->resCode | 大于0的数值 | 调用失败,返回错误代码 |
FarelDbKvRes->errorInfos[0]->resInfo | 非空字符串 | 调用失败,返回错误信息字符串 |
时间复杂度
O(logN)
样例代码
#include <iostream>
#include <functional>
#include <memory>
#include "fareldb_connection.h"
using namespace std;
using namespace fareldb_connection;
int main(int argc,char *argv[])
{
//创建连接
FarelDbConnection conn;
//连接
std::tuple<int, string> resConn = conn.connect("127.0.0.1", 6800, "root", "root");
//判断连接是否失败
if (0 != get<0>(resConn))
{
printf("调用失败,错误代码:%d : 错误信息:%s\n", get<0>(resConn), get<1>(resConn).c_str());
return;
}
//连接成功
//SET key value 设置KEY_VALUE的字符串值为 Tom said "Hello FarelDB".
string kvCommand = u8"set specialKey \" Tom said \\\"Hello FarelDB\\\". \" ";//命令需要使用utf8字符串
//执行命令
std::shared_ptr<FarelDbKvRes> res(conn.queryKv(kvCommand));
//判断执行命令返回是否成功
if (res->errorInfos.size() == 0)
{
printf("调用成功: %s \n", kvCommand.c_str());
}
else
{
printf("调用失败,错误代码:%d ; 错误信息: %s \n", res->errorInfos[0]->resCode, res->errorInfos[0]->resInfo.c_str());
}
}
补充说明
kvCommand = u8" set specialKey " Tom said \“Hello FarelDB\”. " "; 语句,字符串从左往右说明如下:
- “u8”是c++语言中将字符串转为UTF8的宏定义,FarelDB内部字符集采用UTF8,因此命令字符串需要转换成UTF8;
- 本命令意图是设置 KEY_VALUE 为带有空格,且包含双引号的字符串 Tom said “Hello FarelDB”. FarelDB要求,如果 KEY_VALUE 中需要包含双引号或空格,则KEY_VALUE整体需要两边增加双引号,并且需要利用反斜杠”\”标注字符串中的双引号,标注后的双引号将作为字符串的一部分,因此,kvCommand 命令字符串解析如下:
命令执行成功后,从客户端获取key值为:
FarelDb 127.0.0.1:10102 > get specialKey
" Tom said "Hello FarelDB". "
(0 ms)