我正在编写一个能够使用C++ API连接到memcachedb
实例的小型 C++ 应用程序。libmemcached
该memcachedb
实例是使用以下命令创建的:
memcachedb -m 64 -p 21201 -A 4096 -u memcachedb -l 127.0.0.1 -H /var/lib/memcachedb -f /var/lib/memcachedb/default.db -U off
我可以通过执行以下操作来检索服务器 STATS:
telnet 127.0.0.1 21201
stats
STAT pid 1972
STAT uptime 124936
STAT time 1428898165
STAT version 1.2.0
STAT pointer_size 64
STAT rusage_user 5.687019
STAT rusage_system 13.329336
STAT ibuffer_size 512
STAT curr_connections 5
STAT total_connections 12
STAT connection_structures 6
STAT cmd_get 4
STAT cmd_set 4
STAT get_hits 4
STAT get_misses 0
STAT bytes_read 236
STAT bytes_written 2171
STAT threads 4
END
要以编程方式检索服务器 STATS,我使用以下代码:
#include <libmemcached/memcached.hpp>
#include <string>
#include <stdio.h>
#include <string.h>
using namespace std;
using namespace memcache;
int main(int argc, char **argv) {
std::string host(argv[1]);
int port;
istringstream(std::string(argv[2])) >> port;
printf("%s\n", "Instantiating client");
Memcache first_client;
printf("Adding server host=[%s] port=[%d]\n", host.c_str(), port);
first_client.addServer(host, port);
printf("%s\n", "Getting server STATS");
map<string, map<string, string> > my_stats;
bool gotStats = first_client.getStats(my_stats);
if (gotStats) {
printf("%s\n", "Got STATS");
} else {
printf("%s\n", "Unable to get STATS");
}
return EXIT_SUCCESS;
}
我正在使用以下内容编译应用程序Makefile
:
CXXFLAGS = -O2 -g -Wall -fmessage-length=0
OBJS = MemcachedExample.o
LIBS = -lmemcached
TARGET = MemcachedExample
$(TARGET): $(OBJS)
$(CXX) -o $(TARGET) $(OBJS) $(LIBS)
all: $(TARGET)
clean:
rm -f $(OBJS) $(TARGET)
当我使用以下命令执行应用程序时:
MemcachedExample 127.0.0.1 21201
它无法检索服务器 STATS:
Instantiating client
Adding server host=[127.0.0.1] port=[21201]
Getting server STATS
Unable to get STATS
我究竟做错了什么?我将不胜感激。