2015-01-14 23:35:23 +08:00
|
|
|
|
#pragma once
|
2017-06-02 14:47:24 +08:00
|
|
|
|
#include "../acl_cpp_define.hpp"
|
2015-01-14 23:35:23 +08:00
|
|
|
|
#include <map>
|
|
|
|
|
#include <vector>
|
2017-06-02 14:47:24 +08:00
|
|
|
|
#include "redis_command.hpp"
|
2015-01-14 23:35:23 +08:00
|
|
|
|
|
|
|
|
|
namespace acl
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
class string;
|
|
|
|
|
class redis_client;
|
|
|
|
|
class redis_result;
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
2015-02-02 23:52:11 +08:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* all the commands in redis Strings are be implemented.
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-03-27 17:05:12 +08:00
|
|
|
|
class ACL_CPP_API redis_string : virtual public redis_command
|
2015-01-14 23:35:23 +08:00
|
|
|
|
{
|
|
|
|
|
public:
|
2015-03-29 19:27:41 +08:00
|
|
|
|
/**
|
|
|
|
|
* see redis_command::redis_command()
|
|
|
|
|
*/
|
2016-01-17 13:35:12 +08:00
|
|
|
|
redis_string(void);
|
2015-03-29 19:27:41 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* see redis_command::redis_command(redis_client*)
|
|
|
|
|
*/
|
2015-03-27 17:05:12 +08:00
|
|
|
|
redis_string(redis_client* conn);
|
2015-03-29 19:27:41 +08:00
|
|
|
|
|
|
|
|
|
/**
|
2016-05-22 09:10:34 +08:00
|
|
|
|
* see redis_command::redis_command(redis_client_cluster*, size_t)
|
2015-03-29 19:27:41 +08:00
|
|
|
|
*/
|
2016-01-17 13:35:12 +08:00
|
|
|
|
redis_string(redis_client_cluster* cluster, size_t max_conns = 0);
|
|
|
|
|
virtual ~redis_string(void);
|
2015-01-14 23:35:23 +08:00
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ֵ value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* set the string value of a key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the key of a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param value {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> value
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the value of a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> false <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* true if SET was executed correctly, false if error happened or
|
|
|
|
|
* the key's object isn't a string.
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool set(const char* key, const char* value);
|
|
|
|
|
bool set(const char* key, size_t key_len,
|
|
|
|
|
const char* value, size_t value_len);
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
2015-02-02 23:52:11 +08:00
|
|
|
|
* <EFBFBD><EFBFBD>ֵ value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ timeout (<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>λ)<EFBFBD><EFBFBD>
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD> SETEX <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ֵ
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* set key to hold the strnig value, and set key to timeout after
|
|
|
|
|
* a given number of seconds.
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the key of a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param value {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> value
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the value of a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param timeout {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the timeout in seconds of a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> false <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* true if SETEX was executed correctly, false if error happened
|
|
|
|
|
* or the object specified by the key is not a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool setex(const char* key, const char* value, int timeout);
|
|
|
|
|
bool setex(const char* key, size_t key_len, const char* value,
|
|
|
|
|
size_t value_len, int timeout);
|
|
|
|
|
|
2015-02-02 23:52:11 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>ֵ value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ timeout (<EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>λ)<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD> SETEX <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>ֵ
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* set key to hold the string value, and set key to timeout after
|
|
|
|
|
* a given number of milliseconds.
|
2015-02-02 23:52:11 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the key of a string
|
2015-02-02 23:52:11 +08:00
|
|
|
|
* @param value {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> value
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the value of a string
|
2015-02-02 23:52:11 +08:00
|
|
|
|
* @param timeout {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the timeout in milliseconds of a string
|
2015-02-02 23:52:11 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> false <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* true if SETEX was executed correctly, false if error happened
|
|
|
|
|
* or the object specified by the key is not a string
|
2015-02-02 23:52:11 +08:00
|
|
|
|
*/
|
|
|
|
|
bool psetex(const char* key, const char* value, int timeout);
|
|
|
|
|
bool psetex(const char* key, size_t key_len, const char* value,
|
|
|
|
|
size_t value_len, int timeout);
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD> key <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Ϊ value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> SETNX <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κζ<EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* set the value of a key, only if the key does not exist.
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the key of the string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param value {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> value
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the value of the string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* return the value as below:
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* -1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* error happened or the object by the key isn't a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the string of the key already exists
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳɹ<EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the command was executed correctly
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
int setnx(const char* key, const char* value);
|
|
|
|
|
int setnx(const char* key, size_t key_len,
|
|
|
|
|
const char* value, size_t value_len);
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> APPEND <EFBFBD><EFBFBD><EFBFBD> value <EFBFBD>ӵ<EFBFBD> key ԭ<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ĩβ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD> APPEND <EFBFBD>ͼؽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD>Ϊ value
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* append a value to a key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the key of a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param value {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the value to be appended to a key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {int} <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD>ȣ<EFBFBD>-1 <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* return the length of the string after appending, -1 if error
|
|
|
|
|
* happened or the key's object isn't a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
int append(const char* key, const char* value);
|
|
|
|
|
int append(const char* key, const char* value, size_t size);
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ֵ
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* get the value of a key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* the key of a string
|
2016-11-27 21:03:24 +08:00
|
|
|
|
* @param buf {string&} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>Ӧ key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* store the value of a key after GET executed correctly, key not
|
|
|
|
|
* exist if the buf is empty when return true
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> false <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 17:34:24 +08:00
|
|
|
|
* if the GET was executed correctly, false if error happened or
|
|
|
|
|
* is is not a string of the key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool get(const char* key, string& buf);
|
2015-01-19 00:03:30 +08:00
|
|
|
|
bool get(const char* key, size_t len, string& buf);
|
2015-01-29 00:38:29 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Ƚϴ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD>г<EFBFBD>һЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>ڴ棬ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><EFBFBD>صĽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶Խ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD>ã<EFBFBD> redis_result::get(size_t, size_t*) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* Ƭ<EFBFBD><EFBFBD>Ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> redis_result::get_size() <EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Ƭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
|
|
|
|
* @param buf {string&} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> false <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
const redis_result* get(const char* key);
|
2015-01-19 00:03:30 +08:00
|
|
|
|
const redis_result* get(const char* key, size_t len);
|
2015-01-14 23:35:23 +08:00
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Ϊ value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD>ľ<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* set the string value of a key and and return its old value
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the key of string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param value {const char*} <EFBFBD>趨<EFBFBD><EFBFBD><EFBFBD>µĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the new string value of the key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param buf {string&} <EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľɵ<EFBFBD>ֵ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* store the old string value of the key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* if GETSET was executed correctly.
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool getset(const char* key, const char* value, string& buf);
|
2015-01-29 00:38:29 +08:00
|
|
|
|
bool getset(const char* key, size_t key_len, const char* value,
|
|
|
|
|
size_t value_len, string& buf);
|
2015-01-14 23:35:23 +08:00
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* get the length of value stored in a key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the key of the string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* return value as below:
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* -1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* error happened or the it isn't a string of the key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the key doesn't exist
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* >0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the length of the value stored in a key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
|
|
|
|
int get_strlen(const char* key);
|
2015-04-14 22:03:56 +08:00
|
|
|
|
int get_strlen(const char* key, size_t key_len);
|
2015-01-29 00:38:29 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD> value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д(overwrite)<EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> offset <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>հ<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* overwrite part of a string at key starting at the specified offset
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the key of a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param offset {unsigned} ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD>ȣ<EFBFBD><EFBFBD><EFBFBD>ʱ
|
|
|
|
|
* <EFBFBD>Ǽ<EFBFBD><EFBFBD>Ŀն<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> \0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the specified offset of the string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param value {const char*} <EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>ֵ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the value to be set
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {int} <EFBFBD><EFBFBD>ǰ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the length of the string after SETRANGE
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
int setrange(const char* key, unsigned offset, const char* value);
|
|
|
|
|
int setrange(const char* key, size_t key_len, unsigned offset,
|
|
|
|
|
const char* value, size_t value_len);
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD>ȡ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD> start <EFBFBD><EFBFBD> end <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* (<EFBFBD><EFBFBD><EFBFBD><EFBFBD> start <EFBFBD><EFBFBD> end <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* get substring of the string stored at a key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the key of string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param start {int} <EFBFBD><EFBFBD>ʼ<EFBFBD>±<EFBFBD>ֵ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the starting offset of the string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param end {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>ֵ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the ending offset of the string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param buf {string&} <EFBFBD>ɹ<EFBFBD>ʱ<EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* store the substring result
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* if GETRANGE was executed correctly.
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* ע<EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>λ<EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -1 <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool getrange(const char* key, int start, int end, string& buf);
|
|
|
|
|
bool getrange(const char* key, size_t key_len,
|
|
|
|
|
int start, int end, string& buf);
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>λ(bit)<EFBFBD><EFBFBD>
|
|
|
|
|
* λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> value <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* set or clear the bit at offset in the string value stored at key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the key of the string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param offset {unsigned} ָ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the offset at the string value
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param bit {bool} Ϊ true <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD>־λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* set bit if true, or clear bit if false at the specified offset
|
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|
|
|
|
* if the command was executed correctly
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-08-22 18:05:46 +08:00
|
|
|
|
bool setbit_(const char* key, unsigned offset, bool bit);
|
|
|
|
|
bool setbit_(const char* key, size_t len, unsigned offset, bool bit);
|
2015-01-29 00:38:29 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡָ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>λ(bit)<EFBFBD><EFBFBD><EFBFBD><EFBFBD> offset <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
* <EFBFBD>ij<EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* get the bit at offset in the string value stored at key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the key of the string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param offset {unsigned} ָ<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the offset in the string value
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param bit {int&} <EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>洢ָ<EFBFBD><EFBFBD>λ<EFBFBD>õı<EFBFBD>־λ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* on success it will stored the bit at the specified offset
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> false <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* if the GETBIT was executed correctly, false if error happened,
|
|
|
|
|
* or the key doesn't store a string object
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool getbit(const char* key, unsigned offset, int& bit);
|
|
|
|
|
bool getbit(const char* key, size_t len, unsigned offset, int& bit);
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 1 <EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> start/end<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* count set bits in a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the key of a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {int} <EFBFBD><EFBFBD>־λΪ 1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-1 <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the count of bits been set, -1 if error happened or it's not
|
|
|
|
|
* a string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
int bitcount(const char* key);
|
|
|
|
|
int bitcount(const char* key, size_t len);
|
|
|
|
|
int bitcount(const char* key, int start, int end);
|
|
|
|
|
int bitcount(const char* key, size_t len, int start, int end);
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>浽 destkey
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* BITOP AND on multiple source keys and save the result to another key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param destkey {const char*} Ŀ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the key storing the result
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param keys Դ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the source keys
|
|
|
|
|
* @return {int} <EFBFBD>洢<EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD> key <EFBFBD>е<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* the size of the string stored in the destination key, that is
|
|
|
|
|
* equal to the size of the longest input string
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
int bitop_and(const char* destkey, const std::vector<string>& keys);
|
|
|
|
|
int bitop_and(const char* destkey, const std::vector<const char*>& keys);
|
|
|
|
|
int bitop_and(const char* destkey, const char* key, ...);
|
|
|
|
|
int bitop_and(const char* destkey, const char* keys[], size_t size);
|
2015-01-29 00:38:29 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>浽 destkey
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* BITOP OR on multiple source keys and save the result to another key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param destkey {const char*} Ŀ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the destination key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param keys Դ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the source keys
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {int}
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the size of the string stored in the destination key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
|
|
|
|
int bitop_or(const char* destkey, const std::vector<string>& keys);
|
|
|
|
|
int bitop_or(const char* destkey, const std::vector<const char*>& keys);
|
|
|
|
|
int bitop_or(const char* destkey, const char* key, ...);
|
2015-01-14 23:35:23 +08:00
|
|
|
|
int bitop_or(const char* destkey, const char* keys[], size_t size);
|
2015-01-29 00:38:29 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>浽 destkey
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* BITOP XOR on multiple source keys and save the result to another key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param destkey {const char*} Ŀ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the destination key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param keys Դ<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the source keys
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {int}
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the size of the string stored in the destination key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
|
|
|
|
int bitop_xor(const char* destkey, const std::vector<string>& keys);
|
|
|
|
|
int bitop_xor(const char* destkey, const std::vector<const char*>& keys);
|
|
|
|
|
int bitop_xor(const char* destkey, const char* key, ...);
|
2015-01-14 23:35:23 +08:00
|
|
|
|
int bitop_xor(const char* destkey, const char* keys[], size_t size);
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* ͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key-value <EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* set multiple key-value pair
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param objs key-value <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the collection of multiple key-value pair
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* if the command was executed correctly
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool mset(const std::map<string, string>& objs);
|
|
|
|
|
bool mset(const std::vector<string>& keys,
|
|
|
|
|
const std::vector<string>& values);
|
|
|
|
|
bool mset(const char* keys[], const char* values[], size_t argc);
|
|
|
|
|
bool mset(const char* keys[], const size_t keys_len[],
|
|
|
|
|
const char* values[], const size_t values_len[], size_t argc);
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱͬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key-value <EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* set multiple keys to multiple values only if none of the keys exist
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param objs key-value <EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the collection of multile key-value pair
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* return value as below:
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* -1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* error happened or there were a object of not a string.
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* 0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* none be set because some of the keys already exist
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳɹ<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* add ok.
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
int msetnx(const std::map<string, string>& objs);
|
|
|
|
|
int msetnx(const std::vector<string>& keys,
|
|
|
|
|
const std::vector<string>& values);
|
|
|
|
|
int msetnx(const char* keys[], const char* values[], size_t argc);
|
|
|
|
|
int msetnx(const char* keys[], const size_t keys_len[],
|
|
|
|
|
const char* values[], const size_t values_len[], size_t argc);
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD>棬<EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD>ؿմ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* get the values of the given keys
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param keys {const std::vector<string>&} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the given keys
|
|
|
|
|
* @param out {std::vector<acl::string>*} <EFBFBD>ǿ<EFBFBD>ʱ<EFBFBD>洢<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD> key Ҳ<EFBFBD><EFBFBD><EFBFBD>洢һ<EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* acl::string array storing the result. if one key not exists,
|
|
|
|
|
* a empty string "" will also be stored in the array.
|
2015-01-30 22:58:13 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ַ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* if successul, one of below ways can be used to get the result:
|
|
|
|
|
*
|
|
|
|
|
* 1<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿյĴ洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ
|
|
|
|
|
* input the no-NULL result parameter when call hmget, when
|
|
|
|
|
* success, the result will store the values of the given fileds
|
|
|
|
|
*
|
|
|
|
|
* 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> get_value <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* call redis_command::result_value with the specified subscript
|
|
|
|
|
*
|
|
|
|
|
* 3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> get_child <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD>(redis_result<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
|
|
|
|
* redis_result::argv_to_string <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-01-30 22:58:13 +08:00
|
|
|
|
* redis_result::argv_to_string <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* call redis_command::result_child with specified subscript to
|
|
|
|
|
* get redis_result object, then call redis_result::argv_to_string
|
|
|
|
|
* with above result to get the values of the give fileds
|
|
|
|
|
*
|
|
|
|
|
* 4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> get_result <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> redis_result<EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>
|
2015-01-30 22:58:13 +08:00
|
|
|
|
* redis_result::get_child <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ԫ<EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ 2 <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* call redis_command::get_result with the specified subscript to
|
|
|
|
|
* get redis_result object, and use redis_result::get_child to
|
|
|
|
|
* get one result object, then call redis_result::argv_to_string
|
|
|
|
|
* to get the value of one filed.
|
|
|
|
|
*
|
|
|
|
|
* 5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> get_children <EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD> redis_result <EFBFBD><EFBFBD>
|
2015-01-30 22:58:13 +08:00
|
|
|
|
* <EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> argv_to_string <EFBFBD><EFBFBD>ÿһ<EFBFBD><EFBFBD>Ԫ<EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* use redis_command::get_children to get the redis_result array,
|
|
|
|
|
* then use redis_result::argv_to_string to get every value of
|
|
|
|
|
* the given fileds
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool mget(const std::vector<string>& keys,
|
2015-01-20 00:10:17 +08:00
|
|
|
|
std::vector<string>* out = NULL);
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool mget(const std::vector<const char*>& keys,
|
2015-01-20 00:10:17 +08:00
|
|
|
|
std::vector<string>* out = NULL);
|
2015-01-14 23:35:23 +08:00
|
|
|
|
|
2015-01-30 22:58:13 +08:00
|
|
|
|
bool mget(std::vector<string>* result, const char* first_key, ...);
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool mget(const char* keys[], size_t argc,
|
2015-01-20 00:10:17 +08:00
|
|
|
|
std::vector<string>* out = NULL);
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool mget(const char* keys[], const size_t keys_len[], size_t argc,
|
2015-01-20 00:10:17 +08:00
|
|
|
|
std::vector<string>* out = NULL);
|
2015-01-14 23:35:23 +08:00
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD> key <EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>һ
|
|
|
|
|
* 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>ô key <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ϊ 0 <EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD> INCR <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD>ʾΪ<EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64 λ(bit)<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ʾ֮<EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* increment the integer value of a key by one
|
|
|
|
|
* 1) if key not exists, the key's value will be set 0 and INCR
|
|
|
|
|
* 2) if key's value is not a number an error will be returned
|
|
|
|
|
* 3) the number is a 64 signed integer
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the given key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param result {long long int*} <EFBFBD>ǿ<EFBFBD>ʱ<EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* store the result after INCR if it isn't NULL
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* if the INCR was executed correctly
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool incr(const char* key, long long int* result = NULL);
|
2015-01-29 00:38:29 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> increment
|
|
|
|
|
* 1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>ô key <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ϊ 0 <EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD> INCRBY <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD>ʾΪ<EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64 λ(bit)<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ʾ֮<EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* increment the integer value of a key by a given amount
|
|
|
|
|
* 1) if key not exists, the key's value will be set 0 and INCRBY
|
|
|
|
|
* 2) if key's value is not a number an error will be returned
|
|
|
|
|
* 3) the number is a 64 signed integer
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the given key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param inc {long long int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the given amount
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param result {long long int*} <EFBFBD>ǿ<EFBFBD>ʱ<EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* store the result after INCR if it isn't NULL
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* if the INCRBY was executed correctly
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool incrby(const char* key, long long int inc,
|
|
|
|
|
long long int* result = NULL);
|
2015-01-29 00:38:29 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Ϊ key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 1) <EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>ô INCRBYFLOAT <EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD> key <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Ϊ 0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>мӷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>гɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô key <EFBFBD><EFBFBD>ֵ<EFBFBD>ᱻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ִ<EFBFBD>мӷ<EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 3) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ܱ<EFBFBD>ʾС<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD>ʮ<EFBFBD><EFBFBD>λ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* increment the float value of a key by the given amount
|
|
|
|
|
* 1) if key not exists, the key's value will be set 0 and INCRBYFLOAT
|
|
|
|
|
* 2) if key's value is not a float an error will be returned
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the given key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param inc {double} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the given amount
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param result {double*} <EFBFBD>ǿ<EFBFBD>ʱ<EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* store the result after INCR if it isn't NULL
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* if the INCRBYFLOAT was executed correctly
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool incrbyfloat(const char* key, double inc, double* result = NULL);
|
|
|
|
|
|
2015-01-29 00:38:29 +08:00
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD> key <EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>һ
|
|
|
|
|
* 1) <EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>ô key <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ϊ 0 <EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD> DECR <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD>ʾΪ<EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 3) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64 λ(bit)<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ʾ֮<EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* decrement the integer value of a key by one
|
|
|
|
|
* 1) if key not exists, the key's value will be set 0 and DECR
|
|
|
|
|
* 2) if key's value is not a number an error will be returned
|
|
|
|
|
* 3) the number is a 64 signed integer
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the given key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param result {long long int*} <EFBFBD>ǿ<EFBFBD>ʱ<EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* store the result after INCR if it isn't NULL
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* if the DECR was executed correctly
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool decr(const char* key, long long int* result = NULL);
|
2015-01-29 00:38:29 +08:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> decrement
|
|
|
|
|
* 1) <EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>ô key <EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>Ϊ 0 <EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD> DECRBY <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ܱ<EFBFBD>ʾΪ<EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 3) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64 λ(bit)<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ʾ֮<EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* decrement the integer value of a key by the given amount
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param key {const char*} <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> key
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the given key
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param dec {long long int} <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* the given amount
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @param result {long long int*} <EFBFBD>ǿ<EFBFBD>ʱ<EFBFBD>洢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* store the result after INCR if it isn't NULL
|
2015-01-29 00:38:29 +08:00
|
|
|
|
* @return {bool} <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ɹ<EFBFBD>
|
2015-04-14 22:03:56 +08:00
|
|
|
|
* if the DECRBY was executed correctly
|
2015-01-29 00:38:29 +08:00
|
|
|
|
*/
|
2015-01-14 23:35:23 +08:00
|
|
|
|
bool decrby(const char* key, long long int dec,
|
|
|
|
|
long long int* result = NULL);
|
|
|
|
|
|
|
|
|
|
private:
|
2015-01-19 00:03:30 +08:00
|
|
|
|
int bitop(const char* op, const char* destkey,
|
|
|
|
|
const std::vector<string>& keys);
|
|
|
|
|
int bitop(const char* op, const char* destkey,
|
|
|
|
|
const std::vector<const char*>& keys);
|
|
|
|
|
int bitop(const char* op, const char* destkey,
|
|
|
|
|
const char* keys[], size_t size);
|
2015-01-29 00:38:29 +08:00
|
|
|
|
|
2015-08-15 20:57:12 +08:00
|
|
|
|
bool incoper(const char* cmd, const char* key, long long int* inc,
|
2015-01-29 00:38:29 +08:00
|
|
|
|
long long int* result);
|
|
|
|
|
|
2015-01-14 23:35:23 +08:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace acl
|