zoukankan      html  css  js  c++  java
  • Redis之hiredis API (String)

    String

    //
    // Created by zhangrongxiang on 2018/3/7 13:48
    // File string2
    //
    
    #include <hiredis/hiredis.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    

    连接redis服务

    int main() {
        redisContext *context = redisConnect("127.0.0.1", 6379);
        if (context == NULL || context->err) {
            if (context) {
                printf("%s
    ", context->errstr);
            } else {
                printf("redisConnect error
    ");
            }
            exit(EXIT_FAILURE);
        }
        printf("-----------------connect success--------------------
    ");
    

    SET key value

        char *key = "str";
        char *val = "Hello World";
        /*SET key value */
        redisReply *reply = redisCommand(context, "SET %s %s", key, val);
        if (reply->type == REDIS_REPLY_STATUS) {
            /*SET str Hello World*/
            printf("SET %s %s
    ", key, val);
        }
        freeReplyObject(reply);
    

    GET key

        /*GET key*/
        reply = redisCommand(context, "GET %s", key);
        if (reply->type == REDIS_REPLY_STRING) {
            /*GET str Hello World*/
            printf("GET str %s
    ", reply->str);
            /*GET len 11*/
            printf("GET len %d
    ", reply->len);
        }
        freeReplyObject(reply);
    

    APPEND key value

        /*APPEND key value*/
        char *append = " I am your GOD";
        reply = redisCommand(context, "APPEND %s %s", key, append);
        if (reply->type == REDIS_REPLY_INTEGER) {
            printf("APPEND %s %s 
    ", key, append);
        }
        freeReplyObject(reply);
        /*GET key*/
        reply = redisCommand(context, "GET %s", key);
        if (reply->type == REDIS_REPLY_STRING) {
            //GET Hello World I am your GOD
            printf("GET %s
    ", reply->str);
        }
        freeReplyObject(reply);
    

    INCR key

        /*INCR key*/
        reply = redisCommand(context, "INCR counter");
        if (reply->type == REDIS_REPLY_INTEGER) {
            printf("INCR counter %lld
    ", reply->integer);
        }
        freeReplyObject(reply);
        reply = redisCommand(context, "INCR counter");
        if (reply->type == REDIS_REPLY_INTEGER) {
            printf("INCR counter %lld
    ", reply->integer);
        }
        freeReplyObject(reply);
    

    DECR key

        /*DECR key*/
        reply = redisCommand(context, "DECR counter");
        if (reply->type == REDIS_REPLY_INTEGER) {
            printf("DECR counter %lld
    ", reply->integer);
        }
        freeReplyObject(reply);
        reply = redisCommand(context, "DECR counter");
        if (reply->type == REDIS_REPLY_INTEGER) {
            printf("DECR counter %lld
    ", reply->integer);
        }
        freeReplyObject(reply);
    

    DECRBY key decrement

        /*DECRBY key decrement*/
        reply = redisCommand(context, "DECRBY counter 5");
        if (reply->type == REDIS_REPLY_INTEGER) {
            printf("DECRBY counter %lld
    ", reply->integer);
        }
        freeReplyObject(reply);
        reply = redisCommand(context, "DECRBY counter 5");
        if (reply->type == REDIS_REPLY_INTEGER) {
            printf("DECRBY counter %lld
    ", reply->integer);
        }
        freeReplyObject(reply);
    

    INCRBY key increment

        /*INCRBY key increment*/
        reply = redisCommand(context, "INCRBY counter 5");
        if (reply->type == REDIS_REPLY_INTEGER) {
            printf("INCRBY counter %lld
    ", reply->integer);
        }
        freeReplyObject(reply);
        reply = redisCommand(context, "INCRBY counter 5");
        if (reply->type == REDIS_REPLY_INTEGER) {
            printf("INCRBY counter %lld
    ", reply->integer);
        }
        freeReplyObject(reply);
    

    ETRANGE key start end

        /*GETRANGE key start end*/
        reply = redisCommand(context, "GETRANGE str 0 5");
        if (reply->type == REDIS_REPLY_STRING) {
            /*GETRANGE str Hello*/
            printf("GETRANGE %s %s
    ", key, reply->str);
        }
        freeReplyObject(reply);
    

    GETSET key value

        /*GETSET key value*/
        reply = redisCommand(context, "GETSET %s %s", key, val);
        if (reply->type == REDIS_REPLY_STRING) {
            /*GETSET str Hello World I am your GOD*/
            printf("GETSET %s %s
    ", key, reply->str);
        }
        /*INCRBYFLOAT key increment*/
        reply = redisCommand(context, "INCRBYFLOAT f 2.1");
        if (reply->type == REDIS_REPLY_STRING) {
            printf("INCRBYFLOAT counter %s
    ", reply->str);
        }
    

    MSET key value [key value ...]

        /*MSET key value [key value ...]*/
        reply = redisCommand(context, "MSET k1 hello k2 world k3 good");
        if (reply->type == REDIS_REPLY_STATUS) {
            printf("MSET k1 hello k2 world k3 good
    ");
        }
        freeReplyObject(reply);
    

    MGET key [key ...]

        /*MGET key [key ...]*/
        reply = redisCommand(context, "MGET k1 k2 k3");
        if (reply->type == REDIS_REPLY_ARRAY) {
            printf("MGET k1  k2  k3 
    ");
            redisReply **pReply = reply->element;
            int i = 0;
            size_t len = reply->elements;
            //hello world good
            for (; i < len; ++i) {
                printf("%s ", pReply[i]->str);
            }
            printf("
    ");
        }
        freeReplyObject(reply);
    

    STRLEN key

        /*STRLEN key*/
        reply = redisCommand(context, "STRLEN str");
        if (reply->type == REDIS_REPLY_INTEGER) {
            //1
            printf("STRLEN str %lld 
    ", reply->integer);
        }
        /*SETEX key seconds value*/
        reply = redisCommand(context, "SETEX s 30 30seconds");
        if (reply->type == REDIS_REPLY_STATUS) {
            printf("SETEX s 30 30seconds
    ");
            freeReplyObject(reply);
            int i = 0;
            while (i++ < 32) {
                reply = redisCommand(context, "GET s");
                if (reply->type == REDIS_REPLY_STRING) {
                    printf("%d s %s
    ", i, reply->str);
                } else if (reply->type == REDIS_REPLY_NIL) {
                    printf("%d s nil
    ", i);
                }
                freeReplyObject(reply);
                sleep(1);
                /*
                 * 29 s 30seconds
                 * 30 s 30seconds
                 * 31 s nil
                 * 32 s nil
                 */
            }
        }
    

    redisFree

        redisFree(context);
        return EXIT_SUCCESS;
    }
    

    struct

    #define REDIS_REPLY_STRING 1
    #define REDIS_REPLY_ARRAY 2
    #define REDIS_REPLY_INTEGER 3
    #define REDIS_REPLY_NIL 4
    #define REDIS_REPLY_STATUS 5
    #define REDIS_REPLY_ERROR 6
    
    /* This is the reply object returned by redisCommand() */
    typedef struct redisReply {
        int type; /* REDIS_REPLY_* */
        long long integer; /* The integer when type is REDIS_REPLY_INTEGER */
        int len; /* Length of string */
        char *str; /* Used for both REDIS_REPLY_ERROR and REDIS_REPLY_STRING */
        size_t elements; /* number of elements, for REDIS_REPLY_ARRAY */
        struct redisReply **element; /* elements vector for REDIS_REPLY_ARRAY */
    } redisReply;
    
    

    All rights reserved

  • 相关阅读:
    Android简易抽屉效果
    apk 下载并自动安装
    python2.7_1.3_获取远程设备的IP地址
    python2.7_1.2_打印设备名和IPv4地址
    python2.7_1.14_编写一个简单的回显客户端/服务器应用
    python2.7_1.13_编写一个SNTP客户端
    C语言程序转换为Python语言
    5分钟弄懂Docker!
    让正则表达式变简单(PythonVerbalExpressions)
    python sqlalchemy-migrate 使用方法
  • 原文地址:https://www.cnblogs.com/zhangrxiang/p/8522934.html
Copyright © 2011-2022 走看看