亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

redis和hiredis的基本使用詳解

 更新時(shí)間:2025年05月30日 09:07:59   作者:kucupung  
這篇文章主要介紹了redis和hiredis的基本使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

介紹了一下redis和hiredis的安裝步驟,用一個(gè)簡(jiǎn)單的demo演示了使用redis的基本過(guò)程。

啟動(dòng)redis步驟

1、下載redis:https://github.com/redis/redis

2、編譯命令:make

3、編譯產(chǎn)物:libredis.a(靜態(tài)庫(kù))和可執(zhí)行文件( redis-server

4、運(yùn)行redis服務(wù):./redis-server

使用hiredis(redis客戶(hù)端)連接redis

1、下載hiredis:https://github.com/redis/hiredis/tree/v1.3.0

2、編譯命令:

make
sudo make install
sudo ldconfig

3、編寫(xiě)一個(gè)簡(jiǎn)單的demo

#include <iostream>
#include <string>
extern "C" {
    #include <hiredis/hiredis.h>
}

int main() {
    // 連接 Redis 服務(wù)器
    redisContext* context = redisConnect("127.0.0.1", 6379);
    if (context == nullptr || context->err) {
        if (context) {
            std::cerr << "連接錯(cuò)誤: " << context->errstr << std::endl;
            redisFree(context);
        } else {
            std::cerr << "無(wú)法分配 Redis 連接上下文" << std::endl;
        }
        return 1;
    }
    std::cout << "成功連接到 Redis 服務(wù)器" << std::endl;

    // 執(zhí)行 SET 命令
    redisReply* reply = static_cast<redisReply*>(redisCommand(context, "SET mykey %s", "Hello, Redis!"));
    if (reply == nullptr) {
        std::cerr << "執(zhí)行 SET 命令失敗" << std::endl;
        redisFree(context);
        return 1;
    }

    // 檢查 SET 命令結(jié)果
    if (reply->type == REDIS_REPLY_STATUS && std::string(reply->str) == "OK") {
        std::cout << "SET 命令執(zhí)行成功" << std::endl;
    } else {
        std::cerr << "SET 命令執(zhí)行失敗: " << reply->str << std::endl;
    }
    freeReplyObject(reply);

    // 執(zhí)行 GET 命令
    reply = static_cast<redisReply*>(redisCommand(context, "GET mykey"));
    if (reply == nullptr) {
        std::cerr << "執(zhí)行 GET 命令失敗" << std::endl;
        redisFree(context);
        return 1;
    }

    // 檢查 GET 命令結(jié)果
    if (reply->type == REDIS_REPLY_STRING) {
        std::cout << "GET 結(jié)果: " << reply->str << std::endl;
    } else {
        std::cerr << "GET 命令執(zhí)行失敗,非預(yù)期的回復(fù)類(lèi)型" << std::endl;
    }
    freeReplyObject(reply);

    // 執(zhí)行 INCR 命令(演示數(shù)值操作)
    reply = static_cast<redisReply*>(redisCommand(context, "INCR counter"));
    if (reply == nullptr) {
        std::cerr << "執(zhí)行 INCR 命令失敗" << std::endl;
        redisFree(context);
        return 1;
    }

    // 檢查 INCR 命令結(jié)果(整數(shù)類(lèi)型)
    if (reply->type == REDIS_REPLY_INTEGER) {
        std::cout << "INCR 結(jié)果: " << reply->integer << std::endl;
    }
    freeReplyObject(reply);

    // 釋放連接
    redisFree(context);
    std::cout << "已斷開(kāi)與 Redis 服務(wù)器的連接" << std::endl;
    return 0;
}

代碼說(shuō)明

  • 連接部分:使用 redisConnect 連接到本地 Redis 服務(wù)器(默認(rèn)ip地址是127.0.0.1,端口6379)
  • 錯(cuò)誤處理:檢查連接是否成功,并處理可能的錯(cuò)誤
  • 命令執(zhí)行:使用 redisCommand 執(zhí)行 Redis 命令,如 SET、GET、INCR
  • 結(jié)果解析:根據(jù) redisReply 的類(lèi)型判斷命令執(zhí)行結(jié)果
  • 資源釋放:使用 freeReplyObject 釋放回復(fù)對(duì)象,使用 redisFree 釋放連接

4、編譯:g++ -o redis_demo main.cpp -lhiredis

5、運(yùn)行程序:./redis_demo

6、日志輸出:

成功連接到 Redis 服務(wù)器
SET 命令執(zhí)行成功
GET 結(jié)果: Hello, Redis!
INCR 結(jié)果: 1
已斷開(kāi)與 Redis 服務(wù)器的連接

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis中Lua腳本的使用場(chǎng)景示例分析

    Redis中Lua腳本的使用場(chǎng)景示例分析

    通過(guò)使用Lua腳本,可以在Redis中實(shí)現(xiàn)復(fù)雜邏輯和原子操作,如原子計(jì)數(shù)、條件更新、事務(wù)性操作、分布式鎖、批量處理、計(jì)數(shù)器與過(guò)期管理、條件刪除、數(shù)據(jù)聚合等,本文介紹了Redis中Lua腳本的幾種常見(jiàn)使用場(chǎng)景及其Java實(shí)現(xiàn)示例,為開(kāi)發(fā)者提供了一個(gè)參考
    2024-11-11
  • Redis數(shù)據(jù)過(guò)期策略的實(shí)現(xiàn)詳解

    Redis數(shù)據(jù)過(guò)期策略的實(shí)現(xiàn)詳解

    最近項(xiàng)目當(dāng)中遇到一個(gè)需求場(chǎng)景,需要清空一些存放在Redis的數(shù)據(jù),本文對(duì)Redis的過(guò)期機(jī)制簡(jiǎn)單的講解一下,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Redis分布式鎖防止緩存擊穿的實(shí)現(xiàn)

    Redis分布式鎖防止緩存擊穿的實(shí)現(xiàn)

    本文主要介紹了Redis分布式鎖防止緩存擊穿的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Deepin UOS編譯安裝Redis的實(shí)現(xiàn)步驟

    Deepin UOS編譯安裝Redis的實(shí)現(xiàn)步驟

    本文主要介紹了Deepin UOS編譯安裝Redis的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Redis 鍵值設(shè)計(jì)使用總結(jié)

    Redis 鍵值設(shè)計(jì)使用總結(jié)

    這篇文章主要介紹了Redis鍵值設(shè)計(jì)的使用總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問(wèn)題及解決

    redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問(wèn)題及解決

    這篇文章主要介紹了redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Redis中有序集合的內(nèi)部實(shí)現(xiàn)方式的詳細(xì)介紹

    Redis中有序集合的內(nèi)部實(shí)現(xiàn)方式的詳細(xì)介紹

    本文主要介紹了Redis中有序集合的內(nèi)部實(shí)現(xiàn)方式的詳細(xì)介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 淺談Redis中LFU算法源碼解析

    淺談Redis中LFU算法源碼解析

    Redis的LFU淘汰算法主要用于?maxmemory-policy?設(shè)置為allkeys-lfu或volatile-lfu時(shí),以最少使用頻率的鍵進(jìn)行淘汰,本文主要介紹了淺談Redis中LFU算法源碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • 高并發(fā)下Redis精確計(jì)數(shù)與時(shí)間窗口過(guò)期的方法詳解

    高并發(fā)下Redis精確計(jì)數(shù)與時(shí)間窗口過(guò)期的方法詳解

    在實(shí)時(shí)數(shù)據(jù)處理系統(tǒng)中,我們經(jīng)常需要統(tǒng)計(jì)某個(gè)事件在特定時(shí)間窗口內(nèi)的發(fā)生次數(shù),本文將詳細(xì)介紹如何基于 Redis 實(shí)現(xiàn)高性能、高可用的計(jì)數(shù)方案,需要的可以參考下
    2025-03-03
  • Redis跳躍表添加元素的方法實(shí)現(xiàn)

    Redis跳躍表添加元素的方法實(shí)現(xiàn)

    本文主要介紹了Redis跳躍表添加元素的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評(píng)論