redis使用

redis介绍

Redis(Remote Dictionary Server)是一个开源的、内存中的数据结构存储系统,通常被归类为键值存储(key-value store)数据库,也可以称为缓存数据库或NoSQL数据库。

以下是 Redis 的一些主要特点功能

内存中存储:Redis将数据存储在内存中,这使得它非常快速和高效。它是一个基于内存的数据库,但也可以将数据持久化到硬盘上,以便在服务器重启后恢复数据。

数据结构多样性:Redis支持多种数据结构,包括字符串、列表(lists)、哈希表(hashes)、集合(sets)、有序集合(sorted sets)等。这使得 Redis 不仅可以作为简单的键值存储,还可以用于处理更复杂的数据操作。

支持持久化:Redis可以通过快照(snapshotting)和AOF(Append-only file)两种方式持久化数据。快照是将内存中的数据定期写入磁盘,AOF则是通过将执行的写操作追加到文件中来记录数据变更。

高性能:由于数据存储在内存中,Redis能够实现非常高的读写性能。它采用单线程模型来避免竞争条件,同时采用了非阻塞I/O模型,使其具有出色的响应速度。

支持事务:Redis支持事务操作,可以将多个命令组合成一个原子操作,保证这些命令要么全部执行,要么全部不执行。

发布订阅:Redis提供了发布订阅(pub/sub)功能,允许客户端订阅一个或多个频道,并在消息发布到这些频道时接收通知。

高可用性:Redis支持主从复制,可以配置多个Redis实例,其中一个为主节点(master),其他为从节点(slave)。从节点会复制主节点的数据,这样在主节点故障时,从节点可以接管服务,保证高可用性。

分布式:Redis Cluster是Redis的分布式解决方案,可以水平扩展数据存储和处理能力,提高系统的吞吐量和可靠性。

由于其快速、灵活和丰富的功能,Redis广泛应用于缓存、会话存储、排行榜、计数器、实时消息传递、任务队列等场景。注意,尽管Redis在内存中存储数据,但由于内存有限,它并不适用于存储大量数据。对于大规模数据存储需求,传统数据库(如MySQL、PostgreSQL)或分布式数据库(如Cassandra、HBase)可能更合适。

redis配置启动

1、配置和启动 Redis 可以按照以下步骤进行:
2、下载和安装 Redis:首先,你需要下载 Redis 的安装包并在你的系统上进行安装。你可以在 Redis 官方网站(https://redis.io/download)下载最新版本的 Redis。
3、配置 Redis:安装完成后,需要对 Redis 进行一些基本配置。Redis 的配置文件位于安装目录下的 redis.conf 文件。你可以编辑这个文件来进行配置。默认情况下,Redis 是以单机模式运行的,可以通过修改配置文件来启用主从复制或 Redis Cluster(分布式模式)等功能。
4、修改绑定地址(可选):如果你希望允许远程连接到 Redis 服务器,则需要在配置文件中找到 bind 配置项并将其设置为 0.0.0.0,表示允许所有IP地址连接。
修改密码认证(可选):如果需要密码认证,可以在配置文件中找到 requirepass 配置项,并将其设置为所需的密码。
5、启动 Redis 服务器:配置完成后,通过以下方式启动 Redis 服务器:
其中 /path/to/redis.conf 是你修改后的配置文件路径。如果没有指定配置文件路径,则 Redis 默认加载当前目录下的 redis.conf 文件。

redis-server /path/to/redis.conf

6、检查 Redis 服务器是否启动:Redis 启动后,默认监听端口 6379。可以使用以下命令检查 Redis 服务器是否在运行
修改配置文件修改开启的端口
修改port项(如果为0是关闭tcp连接)

redis-cli ping

7、连接 Redis 服务器:使用以下命令连接到 Redis 服务器,如果 Redis 服务器设置了密码认证,连接时会要求输入密码

redis-cli

8、redis.sock位置修改,用于域通信时连接打开的sock文件,用redis.conf开启redis后出现。

unixsocket /tmp/redis.sock

启动后查看

root     2748438 2723144  0 17:43 pts/3    00:00:00 /usr/local/bin/redis-server 127.0.0.1:6379

redis c连接使用

在 C 语言中使用 hiredis 客户端库与 Redis 进行交互时,常用的一些函数包括以下几个:

redisConnect():用于建立与 Redis 服务器的连接。它返回一个 redisContext*,可以在后续操作中使用该上下文来进行数据传输。
redisContext *redisConnect(const char *ip, int port);
redisFree():用于关闭与 Redis 服务器的连接,并释放与连接相关的资源。
void redisFree(redisContext *c);
redisCommand():用于向 Redis 服务器发送命令,并获取服务器返回的响应。这是执行 Redis 命令的主要函数。
redisReply *redisCommand(redisContext *c, const char *format, ...);
freeReplyObject():用于释放由 redisCommand() 返回的 redisReply* 结构体。注意在使用完毕后,必须调用这个函数来释放资源。
void freeReplyObject(void *reply);
redisAppendCommand()redisGetReply():这两个函数可以结合使用来实现异步操作,即发送命令后不等待响应,而是继续发送其他命令,然后通过 redisGetReply() 获取之前命令的响应结果。
int redisAppendCommand(redisContext *c, const char *format, ...);
int redisGetReply(redisContext *c, void **reply);

redisConnectUnix() 函数用于通过 Unix 域套接字(Unix Domain Socket)连接到 Redis 服务器。Unix 域套接字是一种特殊类型的套接字,用于在同一台机器上的进程间通信,而不需要经过网络协议栈。这样的通信方式效率更高,不需要经过网络传输,适用于本地通信场景。

redisContext *redisConnectUnix(const char *path);

demo

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <hiredis/hiredis.h>

int main() {
    const char *ip = "127.0.0.1"; // Redis 服务器的 IP 地址
    int port = 6379;             // Redis 服务器的端口号
    const char *key = "name";
    const char *value = "John Doe";

    // 连接到 Redis 服务器
    redisContext *redis_conn = redisConnect(ip, port);
    if (redis_conn == NULL || redis_conn->err) {
        if (redis_conn) {
            printf("连接错误: %s\n", redis_conn->errstr);
            redisFree(redis_conn);
        } else {
            printf("无法连接到 Redis 服务器\n");
        }
        exit(EXIT_FAILURE);
    }

    // 设置键值对
    redisReply *reply = (redisReply *)redisCommand(redis_conn, "SET %s %s", key, value);
    if (reply == NULL) {
        printf("设置键值对失败或结果为空\n");
    } else {
        printf("设置键值对的结果:%s\n", reply->str);
        freeReplyObject(reply);
    }

    // 获取键值对
    reply = (redisReply *)redisCommand(redis_conn, "GET %s", key);
    if (reply == NULL) {
        printf("获取键值对失败或结果为空\n");
    } else {
        if (reply->type == REDIS_REPLY_STRING) {
            printf("键值对 %s 的值为:%s\n", key, reply->str);
        }
        freeReplyObject(reply);
    }

    // 关闭连接
    redisFree(redis_conn);

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值