linux下redis数据库的简单使用

一、redis简介

  Redis是一个key-value存储系统。和 Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、 sets(集合)和zsets(有序集合)几种数据类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作, 而且这些操作都是原子性的。

二、redis的安装

首先从在官网下载redis源码安装包,下载地址:https://github.com/antirez/redis.git

目前最新分支为3.2

1 git clone -b 3.2  https://github.com/antirez/redis.git

下载完成之后进入redis目录,编译安装直接是

make

make install

编译安装完成直接运行

redis-server就可以启用redis服务,可以用netstat命令查看redis监听的端口(默认是6379)

redis服务起来之后我就可以进行相应的测试看数据库是否安装成功:

在命令行输入redis-cli启用redis客户端:

输入一下命令测试redis是否安装成功

127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set test hello
OK
127.0.0.1:6379> get test
"hello"
127.0.0.1:6379>

更多redis命令请参考redis命令手册,这上面详细介绍了redis-cli各种命令的用法

http://doc.redisfans.com/

至此,redis数据库安装完成

三、redis c 接口库的安装

  Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便

  在这里简单介绍一下redis的C接口库:

hiredis是redis的C接口库,使用之前我们要先下载安装hiredis,下载地址:https://github.com/redis/hiredis.git

git clone https://github.com/redis/hiredis.git

下载之后进入hiredis目录

make

make install

下面进行hredis库中几个常用函数介绍

(1)redisConnect函数

该函数用于连接redis数据库

函数原型:

1  redisContext *redisConnect(const char *ip, int port);
2 //说明:该函数用来连接redis数据库,参数为数据库的ip地址和端口,一般redis数据库的端口为6379该函数返回一个结构体redisContext。

redisContext结构体定义如下:

 1 /* Context for a connection to Redis */
 2 typedef struct redisContext {
 3     int err; /* Error flags, 0 when there is no error */
 4     char errstr[128]; /* String representation of error when applicable */
 5     int fd;
 6     int flags;
 7     char *obuf; /* Write buffer */
 8     redisReader *reader; /* Protocol reader */
 9
10     enum redisConnectionType connection_type;
11     struct timeval *timeout;
12
13     struct {
14         char *host;
15         char *source_addr;
16         int port;
17     } tcp;
18
19     struct {
20         char *path;
21     } unix_sock;
22
23 } redisContext;

(2)redisCommand函数

该函数用于执行redis的命令;

函数原型:

1 void *redisCommand(redisContext *c, const char *format, ...);
2 /*说明:该函数执行命令,就如sql数据库中的SQL语句一样,只是执行的是redis数据库中的操作命令,
3 第一个参数为连接数据库时返回的redisContext,
4 后面为可变参数列表,跟C语言printf函数类似,
5 返回值为void*,一般强制转换成为redisReply类型的进行进一步的处理。*/

用法:

redisReply *reply = (redisReply*)redisCommand(c,   cmd);

(3)redisRelpyObject函数

还函数用于释放redisCommand返回值redisReply所占用的内存

1 /* Free a reply object */
2 void freeReplyObject(void *reply)
3 //该函数用于回收释放redisCommand返回值redisReply所占用的内存

(4)redisFree函数

该函数用于释放一个redis数据库的连接

1 void redisFree(redisContext *c)
2 //用于释放redisConnect产生的连接

下面写一个简单的hredis c接口的redis测试程序:

#include <stdio.h>
#include <string.h>
#include <stddef.h>
#include <stdarg.h>
#include <string.h>
#include <assert.h>
#include <hiredis/hiredis.h>

#define REDIS_HOST        "127.0.0.1"
#define REDIS_PORT        6379

void redis_cli()
{
    redisContext *c = NULL;
    redisReply      *r = NULL;

    c = redisConnect(REDIS_HOST, REDIS_PORT);
    if(NULL == c) {
        printf("connect redis server failure\n");
        return;
    }

    printf("redis connect sucess ip: %s  port: %d\n", REDIS_HOST, REDIS_PORT);

    char *cmd1 = "set test hello";
    r = (redisReply*)redisCommand(c, cmd1);
    if (NULL == r) {
        printf("Redis Command error [%s]\n", cmd1);
        redisFree(c);
        return;
    }
    if (r->type == REDIS_REPLY_ERROR ) {
        printf("Redis Command[%s], error:%s\n", cmd1, r->str);
        freeReplyObject(r);
        redisFree(c);
        return;
    }
    printf("redis command execute success[%s]\n", cmd1);
    freeReplyObject(r);

    char *cmd2 = "get test";
    r = (redisReply*)redisCommand(c, cmd2);
    if (NULL == r) {
        printf("Redis Command error [%s]\n", cmd2);
        redisFree(c);
        return;
    }
    if (r->type == REDIS_REPLY_ERROR ) {
        printf("Redis Command[%s], error:%s\n", cmd2, r->str);
        freeReplyObject(r);
        redisFree(c);
        return;
    }
    printf("get test value is: %s\n", r->str);
    freeReplyObject(r);

    const char* cmd3 = "strlen test";
    r = (redisReply*)redisCommand(c, cmd3);
    if ( r->type != REDIS_REPLY_INTEGER)
    {
        printf("Failed to execute command[%s]\n", cmd3);
        freeReplyObject(r);
        redisFree(c);
        return;
    }

    printf("The length of ‘test‘ is %d.\n", r->integer);
    freeReplyObject(r);
    redisFree(c);  

    return;
}

int main(int argc, char **argv)
{

    redis_cli();

    return 0;
}

运行结果:

[[email protected]localhost 3rd]# ./test
redis connect sucess ip: 127.0.0.1  port: 6379
redis command execute success[set test hello]
get test value is: hello
The length of ‘test‘ is 5.
[[email protected] 3rd]# 
时间: 2024-10-09 23:29:42

linux下redis数据库的简单使用的相关文章

Linux 下 Redis使用介绍

出自http://blog.csdn.net/ajun_studio/article/details/6698147 和http://www.oschina.net/question/12_18065?sort=time Redis 是一个高性能的key-value数据库. redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用.它提供了Python,Ruby,Erlang,PHP,Java客户端,使用很方便. Redis

Linux下Redis的编译安装

介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更

Linux下Redis的安装使用

1.   Linux下Redis的安装使用 官方下载:http://redis.io/download 可以根据需要下载不同版本 下载,解压和安装: $ wgethttp://download.redis.io/releases/redis-2.6.17.tar.gz $ tar xzf redis-2.6.17.tar.gz $ cd redis-2.6.17 $ make 编译后的可执行文件在src目录中,可以使用下面的命令运行Redis: $ src/redis-server 你可以使用内

Linux下Redis服务器安装配置

说明:操作系统:CentOS1.安装编译工具yum install wget  make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel kernel keyutils  patch perl 2.安装tcl组件包(安装Redis需要tcl支持)cd /usr/local/src #进入软件包存放目录wget  http://downloads.sourceforge.net/tcl/tcl8.6.6-src.tar.gztar 

linux下redis的安装及配置启动

linux下redis的安装及配置启动 标签: redisnosql 2014-10-24 14:04 19732人阅读 评论(0) 收藏 举报  分类: 数据与性能(41)  wget http://download.redis.io/releases/redis-2.8.6.tar.gztar xzf redis-2.8.6.tar.gzcd redis-2.8.6make 有是make会报错 gcc类的错误 则需安装 gcc 如: yum install -y gcc g++ gcc-c+

Linux下Mongodb数据库主从同步配置

说明: 有两台已经安装完成的Mongodb数据库服务器,现在需要把一台设置为主库,另一台设置为从库,实现主从同步. 操作系统:CentOS 7.0 64位 MongoDB数据库版本:mongodb-linux-x86_64-2.6.5 准备工作:MongoDB数据库安装 具体操作: 一.配置MongoDB主库 以下操作在MongoDB主库服务器上进行 1.cd  /usr/local/mongodb/ #进入MongoDB安装目录 vi /usr/local/mongodb/mongodb.co

MySQL在Windows和Linux下还原数据库

Linux下还原数据库代码: 1,创建一个空的数据库cddl mysql> create database cddl; Query OK, 1 row affected (0.00 sec) 2,还原数据库 [[email protected] mysqlsoftware]# cd /etc/rc.d/init.d [[email protected] mysqlsoftware]# cd /etc/rc.d/init.d [[email protected] init.d]# mysql -h

linux下mysql数据库主从同步配置

说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备篇: 说明:在两台MySQL服务器192.168.21.128和192.168.21.129上分别进行如下操作 备注: 作为主从服务器的MySQL版本建议使用同一版本! 或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本! 一.配置好IP.DNS .网关,确保使用远程连接工具能够连接

Linux下禁止ping最简单的方法

LINUX下禁止ping命令的使用 以root进入Linux系统,然后编辑文件icmp_echo_ignore_allvi /proc/sys/net/ipv4/icmp_echo_ignore_all将其值改为1后为禁止PING将其值改为0后为解除禁止PING 直接修改会提示错误: WARNING: The file has been changed since reading it!!!Do you really want to write to it (y/n)?y"icmp_echo_i