FarelDB 第2章 第1讲 键值对命令 字符串操作类(string) 之 set key value

FarelDB的SET命令用于设置键的字符串值,支持EX和PX设置过期时间,NX和XX选项确保键的存在性。在处理包含空格或双引号的字符串时,需使用转义字符。FarelDB还提供了API接口供程序调用,具有O(logN)的时间复杂度。
摘要由CSDN通过智能技术生成

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.16800> SET KEY_NAME KEY_VALUE

返回值

set 命令成功返回"success"提示以及set执行的时间(单位:毫秒)
如果加了NX 或者 XX选项,SET 没执行,那么会返回nil。

命令实例

打开一个命令行窗口,启动FarelDB服务端,再打开一个命令行窗口,启动FarelDB客户端,输入以下命令:

FarelDB 127.0.0.16800>  set keyname1 stringValue
success
(1 ms)
FarelDB 127.0.0.16800>  get keyname1 
"stringValue"
(1 ms)

对已存在的key进行设置

FarelDB 127.0.0.16800>  set keyname1 "my string Value"
success
(1 ms)
FarelDB 127.0.0.16800>  get keyname1 
"my string Value"
(1 ms)

KEY_VALUE中包含空格或双引号

FarelDB 127.0.0.16800>  set specialKey "Tom said \"Hello\""
success
(1 ms)
FarelDB 127.0.0.16800>  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)

输入参数说明:

输入参数描述可选
CommandSET 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\”. " "; 语句,字符串从左往右说明如下:

  1. “u8”是c++语言中将字符串转为UTF8的宏定义,FarelDB内部字符集采用UTF8,因此命令字符串需要转换成UTF8;
  2. 本命令意图是设置 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值