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\n", context->errstr);
} else {
printf("redisConnect error\n");
}
exit(EXIT_FAILURE);
}
printf("-----------------connect success--------------------\n");
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\n", 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\n", reply->str);
/*GET len 11*/
printf("GET len %d\n", 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 \n", 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\n", reply->str);
}
freeReplyObject(reply);
INCR key
/*INCR key*/
reply = redisCommand(context, "INCR counter");
if (reply->type == REDIS_REPLY_INTEGER) {
printf("INCR counter %lld\n", reply->integer);
}
freeReplyObject(reply);
reply = redisCommand(context, "INCR counter");
if (reply->type == REDIS_REPLY_INTEGER) {
printf("INCR counter %lld\n", reply->integer);
}
freeReplyObject(reply);
DECR key
/*DECR key*/
reply = redisCommand(context, "DECR counter");
if (reply->type == REDIS_REPLY_INTEGER) {
printf("DECR counter %lld\n", reply->integer);
}
freeReplyObject(reply);
reply = redisCommand(context, "DECR counter");
if (reply->type == REDIS_REPLY_INTEGER) {
printf("DECR counter %lld\n", 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\n", reply->integer);
}
freeReplyObject(reply);
reply = redisCommand(context, "DECRBY counter 5");
if (reply->type == REDIS_REPLY_INTEGER) {
printf("DECRBY counter %lld\n", 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\n", reply->integer);
}
freeReplyObject(reply);
reply = redisCommand(context, "INCRBY counter 5");
if (reply->type == REDIS_REPLY_INTEGER) {
printf("INCRBY counter %lld\n", 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\n", 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\n", key, reply->str);
}
/*INCRBYFLOAT key increment*/
reply = redisCommand(context, "INCRBYFLOAT f 2.1");
if (reply->type == REDIS_REPLY_STRING) {
printf("INCRBYFLOAT counter %s\n", 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\n");
}
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 \n");
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("\n");
}
freeReplyObject(reply);
STRLEN key
/*STRLEN key*/
reply = redisCommand(context, "STRLEN str");
if (reply->type == REDIS_REPLY_INTEGER) {
//1
printf("STRLEN str %lld \n", reply->integer);
}
/*SETEX key seconds value*/
reply = redisCommand(context, "SETEX s 30 30seconds");
if (reply->type == REDIS_REPLY_STATUS) {
printf("SETEX s 30 30seconds\n");
freeReplyObject(reply);
int i = 0;
while (i++ < 32) {
reply = redisCommand(context, "GET s");
if (reply->type == REDIS_REPLY_STRING) {
printf("%d s %s\n", i, reply->str);
} else if (reply->type == REDIS_REPLY_NIL) {
printf("%d s nil\n", 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
Redis之hiredis API (String)的更多相关文章
- Redis C客户端API - God's blog - 博客频道 - CSDN.NET
Redis C客户端API - God's blog - 博客频道 - CSDN.NET Redis安装步骤: 1.redis server安装 wget http://redis.googlecod ...
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象
http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value (存一个对象的时候key存) 将哈希 ...
- Redis学习笔记(2)-String
package cn.com; import java.util.List; import redis.clients.jedis.Jedis; public class Redis_String { ...
- 常用API String
Java的API以及Object类 Java的API Java的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JD ...
- redis 五大数据类型之string篇
一: 1:string(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. string类型是二进制安全的.意思是redis ...
- redis - redis数据结构与API
通用命令 keys:遍历所有的key[keys一般不再生产环境使用],时间复杂度O(n) keys * keys he* keys he[h-l]* keys ph? dbsize:计算key的总数, ...
- Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加、删除操作都是 O(1)(平均)。
2.3 hashes 类型及操作 Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加.删除操作都是 O(1)(平均).hash 特别适合用于存储对象.相 ...
- Redis启动服务和String常用命令
Redis启动服务和String常用命令 1. 启动Redis服务 E:\redis>redis-server.exe redis.windows.conf _._ _.-``__ ''-._ ...
- Java常用API(String类)
Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...
随机推荐
- spring获取webapplicationcontext,applicationcontext几种方法详解(转载)
转载自 http://www.blogjava.net/Todd/archive/2010/04/22/295112.html 方法一:在初始化时保存ApplicationContext对象 代码: ...
- EBS增加客制应用CUX:Custom Application
1. 创建数据库文件和帐号 [root@ebs12vis oracle]# su - oracle[oracle@ebs12vis ~]$ sqlplus / as sysdba SQL*Plus: ...
- Javascript Promises 介绍
什么是 Promises Promises是一种关于异步编程的规范,目的是将异步处理对象和处理规则进行规范化,为异步编程提供统一接口. 传统的回调函数 说到JavaScript的异步编程处理,通常 ...
- Unity3d发布的iOS产品中使用GB2312字符编码(CP936)
最近在开发中要用到GB2312字符编码(CP936),在C#代码中便有了如此代码 System.Text.Encoding.GetEncoding() 这在Unity3d 编辑器下运行没有任何问题,打 ...
- Unity3d中使用Lua
对于手机游戏,如果可以在线更新以实现bug修复.新功能添加等等,其好处自不必多说. 通过C#的反射机制,也可以实现某种程度上的脚本级更新,具体可以参考 http://docs.unity3d.com/ ...
- python的print()输出
1.普通的输出: print(str)#str是任意一个字符串,数字··· 2.格式化输出: print('1,2,%s,%d'%('asd',4)) 1,2,asd,4 与C语言有点类似 3.其它: ...
- dynamic的一些使用心得
dynamic关键字才出来的时候,觉得真是没什么用,谁总是和com交互来交互去啊,唯恐避之不及啊. 后来逐渐算是有了一些使用心得,发现这货还真是犀利啊,故在此举几个例子,起抛砖引玉之用. 1.替代XX ...
- 关于gcd和exgcd的一点心得,保证看不懂(滑稽)
网上看了半天……还是没把欧几里得算法和扩展欧几里得算法给弄明白…… 然后想了想自己写一篇文章好了…… 参考文献:https://www.cnblogs.com/hadilo/p/5914302.htm ...
- robot framework学习笔记之三—Scalar变量
一.变量赋值 1)Set赋值 通常使用Set Variable关键字对变量进行赋值,其他Set相关的带Variable的关键字也可以进行赋值 赋值的时候,变量后面写不写『=』都可以,如下: 如果${v ...
- Mysql6.0连接中的几个问题 Mysql6.xx
Mysql6.0连接中的几个问题 在最近做一些Javaweb整合时,因为我在maven官网查找的资源,使用的最新版,6.0.3,发现MySQL连接中的几个问题,总结如下: 1.Loading clas ...