最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

redis和hiredis的基本使用詳解

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

介紹了一下redis和hiredis的安裝步驟,用一個簡單的demo演示了使用redis的基本過程。

啟動redis步驟

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

2、編譯命令:make

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

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

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

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

2、編譯命令:

make
sudo make install
sudo ldconfig

3、編寫一個簡單的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 << "連接錯誤: " << context->errstr << std::endl;
            redisFree(context);
        } else {
            std::cerr << "無法分配 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í)行失敗,非預期的回復類型" << 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ù)類型)
    if (reply->type == REDIS_REPLY_INTEGER) {
        std::cout << "INCR 結(jié)果: " << reply->integer << std::endl;
    }
    freeReplyObject(reply);

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

代碼說明

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

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

5、運行程序:./redis_demo

6、日志輸出:

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

總結(jié)

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

相關(guān)文章

  • Web-ssrfme:redis 未授權(quán)訪問攻擊的問題解決

    Web-ssrfme:redis 未授權(quán)訪問攻擊的問題解決

    本文主要介紹了Web-ssrfme:redis 未授權(quán)訪問攻擊的問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • Redis實現(xiàn)分布式鎖的五種方法詳解

    Redis實現(xiàn)分布式鎖的五種方法詳解

    在分布式架構(gòu)中,我們同樣會遇到數(shù)據(jù)共享操作問題,本文章使用Redis來解決分布式架構(gòu)中的數(shù)據(jù)一致性問題,需要的小伙伴可以參考一下
    2022-06-06
  • Redis如何解決BigKey

    Redis如何解決BigKey

    在Redis的使用過程中,我們經(jīng)常會遇到BigKey, BigKey的大值會導致Redis內(nèi)存中產(chǎn)生大量不連續(xù)的碎片,降低內(nèi)存利用效率,本文主要介紹了Redis如何解決BigKey,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • 利用Redis?lua實現(xiàn)高效讀寫鎖的代碼實例

    利用Redis?lua實現(xiàn)高效讀寫鎖的代碼實例

    這篇文章給大家介紹了如何利用Redis?lua實現(xiàn)高效的讀寫鎖,讀寫鎖的好處就是能幫助客戶讀到的數(shù)據(jù)一定是最新的,寫鎖是排他鎖,而讀鎖是一個共享鎖,需要的朋友可以參考下
    2024-01-01
  • Redis SETEX命令實現(xiàn)鍵值對管理

    Redis SETEX命令實現(xiàn)鍵值對管理

    本文主要介紹了Redis SETEX命令實現(xiàn)鍵值對管理,SETEX命令用于設(shè)置具有過期時間的鍵值對,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06
  • Redis和數(shù)據(jù)庫 數(shù)據(jù)同步問題的解決

    Redis和數(shù)據(jù)庫 數(shù)據(jù)同步問題的解決

    這篇文章主要介紹了Redis和數(shù)據(jù)庫 數(shù)據(jù)同步問題的解決操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • redis數(shù)據(jù)結(jié)構(gòu)之String詳解

    redis數(shù)據(jù)結(jié)構(gòu)之String詳解

    Redis以String為基礎(chǔ)類型,因C字符串效率低、非二進制安全等問題,采用SDS動態(tài)字符串實現(xiàn)高效存儲,通過RedisObject封裝,支持多種編碼方式(如RAW、EMBSTR、INT)和內(nèi)存優(yōu)化策略,靈活管理數(shù)據(jù)結(jié)構(gòu)與內(nèi)存使用
    2025-08-08
  • 高并發(fā)下Redis如何保持數(shù)據(jù)一致性(避免讀后寫)

    高并發(fā)下Redis如何保持數(shù)據(jù)一致性(避免讀后寫)

    本文主要介紹了高并發(fā)下Redis如何保持數(shù)據(jù)一致性(避免讀后寫),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • redis中5種數(shù)據(jù)基礎(chǔ)查詢命令

    redis中5種數(shù)據(jù)基礎(chǔ)查詢命令

    本文主要介紹了redis中5種數(shù)據(jù)基礎(chǔ)查詢命令,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Redis面試必會的題目

    Redis面試必會的題目

    這篇文章主要介紹了Redis面試必會的題目,幫助大家更好的理解和學習redis數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-08-08

最新評論

永胜县| 同德县| 宝应县| 汉川市| 洪雅县| 平潭县| 集贤县| 宜良县| 固原市| 芮城县| 渑池县| 离岛区| 恩平市| 漾濞| 贺兰县| 清苑县| 兴国县| 丰原市| 绵阳市| 武义县| 公安县| 同德县| 恭城| 河西区| 津市市| 桓仁| 来安县| 抚远县| 邯郸县| 孟村| 大竹县| 泗阳县| 确山县| 静安区| 滨州市| 丰原市| 云南省| 汨罗市| 仪征市| 黔东| 赫章县|