C语言操作Redis总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言操作Redis总结相关的知识,希望对你有一定的参考价值。

  1 #include "hiredis.h"
  2 
  3 #define NO_QFORKIMPL
  4 #pragma comment(lib,"hiredis.lib")
  5 #pragma comment(lib,"Win32_Interop.lib")
  6 
  7 int get_int_command(char int_command[200])
  8 {
  9     reply = (redisReply *)redisCommand(c, int_command);
 10     //printf("exists命令执行结果: %d\n", reply->type);
 11     if (reply->type == 3)    //返回整型标识
 12     {
 13         //printf("%s命令执行结果: %d\n", int_command, reply->integer);
 14         return reply->integer;
 15     }
 16     else if (reply->type == 4)    //返回nil对象
 17     {
 18         return -1;
 19     }
 20     else if (reply->type == 6)    //返回错误
 21     {
 22         return -2;
 23     }
 24     freeReplyObject(reply);
 25     return 0;
 26 }
 27 
 28 char* get_string_command(char string_command[200])
 29 {
 30     reply = (redisReply *)redisCommand(c, string_command);
 31     //printf("lindex MA_h1_K 0命令执行结果 reply type: %d\n", reply->type);
 32     if (reply->type == 1)    //返回字符串标识
 33     {
 34         //printf("lindex MA_h1_K 0命令执行结果 reply type: %s\n", reply->str);
 35         return reply->str;
 36     }
 37     else if (reply->type == 4)    //返回nil对象
 38     {
 39         return "不存在要访问的数据";
 40     }
 41     else if (reply->type == 6)    //返回错误
 42     {
 43         return reply->str;
 44     }
 45     freeReplyObject(reply);
 46     return "";
 47 }
 48 
 49 void run_command(char run_command[200])
 50 {
 51     reply = (redisReply *)redisCommand(c, run_command);
 52     //printf("reply type: %d\n", reply->type);
 53     if (reply->type == 5)
 54     {
 55         //printf("run_command执行结果: %s\n", reply->str);
 56     }
 57     freeReplyObject(reply);
 58 }
 59 
 60 int main()
 61 {
 62     SYSTEMTIME sys;
 63     char local_time[25] = "";
 64     
 65     c = redisConnect((char*)redis_host, redis_port);
 66     if (c->err) {    /* Error flags, 0 when there is no error */
 67         printf("连接Redis失败: %s\n", c->errstr);
 68         exit(1);
 69     }
 70     else
 71     {
 72         printf("连接Redis成功!\n");
 73     }
 74 
 75     reply = (redisReply *)redisCommand(c, "AUTH %s", redis_password);
 76     if (reply->type == REDIS_REPLY_ERROR) {
 77         printf("Redis认证失败!\n");
 78     }
 79     else
 80     {
 81         printf("Redis认证成功!\n");
 82     }
 83     freeReplyObject(reply);
 84     
 85     reply = (redisReply *)redisCommand(c, "SELECT 1");    //选择数据库
 86     printf("SELECT: 1 %s\n", reply->str);
 87     freeReplyObject(reply);
 88     
 89     //delete命令
 90     run_command("DEL foo");
 91     
 92     //set命令
 93     run_command("SET foo hello world");
 94 
 95 
 96     //get命令
 97     printf("GET foo命令执行结果 : %s\n", get_string_command("GET foo"));
 98 
 99     
100     //exists命令
101     printf("exists test1命令执行结果: %d\n", get_int_command("exists test1"));
102     printf("exists MA_h1_K命令执行结果: %d\n", get_int_command("exists MA_h1_K"));
103     
104     
105     //llen命令
106     printf("llen MA_h1_K命令执行结果: %d\n", get_int_command("llen MA_h1_K"));
107 
108     
109     //lrange命令
110     reply = (redisReply *)redisCommand(c, "lrange MA_h1_K 0 7");
111     //printf("lrange MA_h1_K 0 7命令执行结果 reply type: %d\n", reply->type);
112     if (reply->type == 2)
113     {
114         printf("队列数量为: %d\n", reply->elements);
115         if (reply->element[0]->type == 1)
116         {
117             for (int i = 0; i < reply->elements; i++)
118             {
119                 printf("lrange MA_h1_K 0 7命令执行结果: %s\n", reply->element[i]->str);
120             }
121         }
122         
123     }
124     freeReplyObject(reply);
125     
126     //lindex命令
127     printf("lindex MA_h1_K 0命令执行结果 : %s\n", get_string_command("lindex MA_h1_K 0"));
128 
129     
130     //lpush命令
131     run_command("lpush list test1 test2 test3");
132     
133     //lpop命令
134     printf("lpop list命令执行结果 : %s\n", get_string_command("lpop list"));
135     
136     //rpop命令
137     printf("rpop list命令执行结果 : %s\n", get_string_command("rpop list"));
138     
139     //rpoplpush命令
140     printf("rpoplpush list list1命令执行结果 : %s\n", get_string_command("rpoplpush list list1"));
141     
142     printf("lpop list1命令执行结果 : %s\n", get_string_command("lpop list1"));
143     
144     //lpush    rpush    lpop    rpop    RPOPLPUSH
145     
146     
147     char test;
148     test = getchar();
149 }

 

以上是关于C语言操作Redis总结的主要内容,如果未能解决你的问题,请参考以下文章

Redis教程(十五):C语言连接操作代码实例

Redis 知识点总结

2018.9.16 Redis 边学习边总结

Redis知识总结

C语言代码片段

超全Redis命令总结(备忘)(建议赶紧收藏)