Redis基本操作主要是指客户端侧的行为,直接上代码实例
Client
#include <iostream>
#include <string>
#include <Poco/Redis/Client.h>
#include <Poco/Redis/Array.h>
using namespace std;
using Poco::Redis::Client;
using Poco::Redis::Array;
// 这段函数在2.0代码中增加到了Client中
bool sendAuth(Client &client, const string& pwd) {
Array cmd;
cmd << "AUTH" << pwd;
std::string response;
try {
response = client.execute<std::string>(cmd);
} catch (...) {
return false;
}
return (response == "OK");
}
int main(int argc, char **argv) {
Client client;
client.connect("127.0.0.1", 6379);
// 如果设置了密码,则需要下面鉴权。
if (!sendAuth(client, "xxxxxxxxx")) {
cout << "authentication failure!" << endl;
return 1;
}
Array cmd;
cmd << "SET"<<"name"<<"anan";
std::string response;
try {
response = client.execute<std::string>(cmd);
cout << response << endl;
} catch (Poco::BadCastException &e) {
cout << e.displayText();
} catch (Poco::Redis::RedisException &e) {
cout << e.displayText();
}
catch (...) {
return 1;
}
return 0;
}
实际上就是命令行的一个封装,一些命令行可以通过Array输入。
那如果要获取数据呢?
Array cmd;
cmd << "GET"<<"name";
Poco::Redis::BulkString response; //注意,这里要使用BulkString
try {
response = client.execute<Poco::Redis::BulkString>(cmd);
cout << response << endl;
} catch (Poco::BadCastException &e) {
cout << e.displayText();
} catch (Poco::Redis::RedisException &e) {
cout << e.displayText();
}
catch (...) {
return 1;
}
return 0;
}
需要说明的事execute函数模板只接受以下几种类型
enum Types
{
REDIS_INTEGER, /// Redis Integer
REDIS_SIMPLE_STRING, /// Redis Simple String
REDIS_BULK_STRING, /// Redis Bulkstring
REDIS_ARRAY, /// Redis Array
REDIS_ERROR /// Redis Error
};
redis.PNG
注意这个类型,加了双引号的就是BULK STRING,不加的,是数字就是integer,不是的就是simple string。
网友评论