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

  • 相关阅读:
    September 29th 2017 Week 39th Friday
    September 28th 2017 Week 39th Thursday
    September 27th 2017 Week 39th Wednesday
    September 26th 2017 Week 39th Tuesday
    September 25th 2017 Week 39th Monday
    September 24th 2017 Week 39th Sunday
    angular2 学习笔记 ( Form 表单 )
    angular2 学习笔记 ( Component 组件)
    angular2 学习笔记 ( Http 请求)
    angular2 学习笔记 ( Router 路由 )
  • 原文地址:https://www.cnblogs.com/zhangrxiang/p/8522934.html
Copyright © 2011-2022 走看看