///redis工具类,在脚本中默认就存在一个redis对象,不需要手工增加变量
--正常请使用iotserver 内置的redis对象,除非需要连接其它的redis服务器
class CTNRedisClient
{
public:
    CTNRedisClient();
    ~CTNRedisClient();

    ///设置服务器
    void setServer(string server, int iTcpPort = 6379,string sPass="");

    ///是否已经登录
    bool isLogin();

    ///登录
    bool login();

    ///退出
    void logout();

    ///检查是否已经连接,没有连接则连接
    bool checkAndLogin();

    ///list 数据结构 
    int llen(string key);
    bool blpop(string key, CTNString& v, int iTimeout = 900000000);
    bool brpop(string key, CTNString& v, int iTimeout = 900000000);
    bool lpop(string key, CTNString& v);
    bool rpop(string key, CTNString& v);
    bool lpush(string key, string v);
    bool rpush(string key, string v);

    bool lrem(string key, string v);
    bool lrange(string key, CSelectHelp& help, int iStart, int iEnd);


    ///hash数据结构
    bool hset(string key, string sField, string v);
    bool hget(string key, string sField, CTNString& v);
    bool hmget(string key, CIntent& it);
    bool hmset(string key, CIntent& it);

    bool hdel(string key, string sField);
    bool hkeys(string key, CSelectHelp& help);
    bool hgetall(string key, CSelectHelp& help);
    bool hexists(string key,string sField);
    bool hincby(string key, string sField,int iAdd=1);
    bool hincbyFloat(string key, string sField, double iAdd = 1);
    int hlen(string key);

    ///普通get,set
    bool del(string key);
    bool exists(string key);

    bool get(string key, CTNString& res);
    bool getSet(string key,string v, CTNString& res);
    bool get2(string key, string& res);

    ///传入it的列表,it会更新
    bool mget(CIntent& it);
    bool mset(CIntent& it);
    bool incr(string key, int iAdd=1);
    bool decr(string key, int iDec=1);

    bool incrFloat(string key, double iAdd = 1);


    ///获取key的从start至end的子串
    bool getRange(string key, int iStart, int iEnd,CTNString& sValue);
    bool set(string key, string v,int iTimeout=-1);///永久有效PERSIST
    bool persist(string key);
    int ttl(string key);

    ///以秒为单位
    bool expire(string key, int iTimeout);   
    bool expireAt(string key, string sTime);
    bool expireAtUnixTime(string key, unsigned int tSet);

    ///像 myname* 代表以myname开头的所有
    bool keys(string sFilter,CSelectHelp& help);

    ///
    bool renameX(string sKeyOld, string sKeyNew);
    bool rename(string sKeyOld, string sKeyNew);
    bool move(string key, string sDB);
    bool type(string key, CTNString& sType);



    ///订阅及发布
    bool publish(string key, string v);

    ///下面这些只有多线程才需要使用
    bool isLock();
    void unlock();
    void lock();

};
Copyright © TouchNet 2015 all right reserved,powered by Gitbook最后修订时间: 2022-06-21 09:21:04

results matching ""

    No results matching ""