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. ...
随机推荐
- D3.js的基础部分之数组的处理 映射(v3版本)
映射(Map) 映射(Map)是十分常见的一种数据结构,由一系列键(key)和值(value)组成的.每个key对应一个value,根据key可以获取和设定value,也可以根据key来查询val ...
- UWP开发入门(七)——下拉刷新
本篇意在给这几天Win10 Mobile负面新闻不断的某软洗地,想要证明实现一个简单的下拉刷新并不困难.UWP开发更大的困难在于懒惰,缺乏学习的意愿.而不是“某软连下拉刷新控件都没有”这样的想法. 之 ...
- 486. Predict the Winner
Given an array of scores that are non-negative integers. Player 1 picks one of the numbers from eith ...
- 3D-2D:PnP
PnP(Perspective-n-Point):当知道n个3D空间点及其投影位置时,估计相机位姿. 2D-2D的对极几何方法需要八个或八个以上的点对(以八点法为例),且存在着初始化.纯旋转和尺度的问 ...
- nosql基本了解
数据库分为关系型数据库和非关系型数据库nosql,关系型数据库比较常见,此处不再多讲:nosql有key-value存储数据库,比如redis:文档型数据库,比如mongodb:列存储数据库,比如hb ...
- wamp集成多个版本php (php7.0)
https://www.cnblogs.com/ypf5208/p/5510274.html
- Azure Powershell部署使用平台映像的托管Windows VM及相关问题说明
1.脚本背景信息: a.使用平台镜像(Windows Server 2016 zh-cn)部署高性能托管磁盘虚拟机 b.虚拟机默认不开启Boot诊断 c.添加三块已经创建好的数据磁盘 d.添加已创建好 ...
- Centos7.4下安装JDK1.8
在安装JDk之前将Linux自带的JDK卸载 查询是否携带JDK rpm -qa | grep java删除自带的JDK rpm -e --nodeps jdk文件 将下载好的JDK传到Linux. ...
- IDEA External libraries 不显示Maven中引入的repository
原文:https://blog.csdn.net/dj_dengjian/article/details/88668012 记录一下遇到的这个问题的解决方法,也是困惑了半天,感觉这是maven的bug ...
- 多事实表 SQL实现和SSAS中MDX实现的差异
如图,资产负债视图是事实表,损益表也是事实表.都包含年.月.组织.账簿信息. SQL如何实现呢? 简单粗暴,事实事实表串事实表,Full Join select 损益视图.年 ,损益视图.年月 ,损益 ...