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. ...
随机推荐
- [label][JavaScript]读nowmagic - js词法作用域、调用对象与闭包
原文链接: http://www.nowamagic.net/librarys/veda/detail/1305 作用域(scope) JavaScript 中的函数 ...
- Oracle E-Business Suite R12.1.x Installation And Upgrade Guide Step by Step
1. Install Oracle E- Business Suite R12.1.1 2. Upgrade E- Business Suite From 12 ...
- 我的第一个博客&GuiHub简单练习
个人介绍 姓名:马瑞 性别:男 班级:网络工程143 出生年月:1995.11 兴趣爱好:玩玩电脑,看看动漫. 编程能力:完全是菜鸟. GutHub的使用体验: 第一步:注册github,这很简 ...
- 二段Linq Groupby操作
var messages = list.GroupBy(p=>p.RefOrderNo,(k,v)=> new {OrderNo = k,SkuInfo = v}) .Select(p = ...
- Easy mistakes in c#
ACCESS MODIFIERS c# has some access modifiers as below: public:class or member can be accessed by no ...
- php萌新|学习|排坑|のmysqli_error()方法的妙用
从开始学习php当现在已经有一个月多.除了每天完成公司布置的日常汇报,也没有耐下性子写一写自己想写的东西.今天就当起个头,坚持一周有个两三片文章或者小总结,也不枉费自己的付出.(我自己都不信,你会信吗 ...
- asp.net 错误页面自定义
在我们上网浏览信息的时候,总会有出现404页面的时候,在我们开发的时候也可以自定义这些页面.刚回这次项目中也使用到了,就在网上找到一些方法,今天就把这些方法重新写一遍加深记忆. 在项目的web.con ...
- 【转】.NET内存管理、垃圾回收
1. Stack和Heap 每个线程对应一个stack,线程创建的时候CLR为其创建这个stack,stack主要作用是记录函数的执行情况.值类型变量(函数的参数.局部变量 等非成员变量)都分配 ...
- NOIP2015BLOCKADE c++ 代码
#include<algorithm> #include<fstream> #include<functional> #include<iostream> ...
- php 编译代码
编译其实就是把所有的代码整合在于一个文件,减少文件包含时间,加快php解析,虽然优化后时间上提升了不多,但能优化便多多少少进行优化.下面给一个编译例子,从而引申. // 定义编译状态 define(' ...