【C++】开源:Redis数据库配置与使用

news2024/11/29 4:29:54

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍Redis数据库配置与使用。
无专精则不能成,无涉猎则不能通。。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 项目介绍
    • :blush:2. 环境配置
    • :satisfied:3. 使用说明

😏1. 项目介绍

项目Github地址:https://github.com/redis/redis

Redis(Remote Dictionary Server)是一款开源的内存数据结构存储系统,它提供了一个键值对存储模型,其中的键可以包括字符串、哈希、列表、集合和有序集合等数据类型。它支持持久化、主从复制、集群和事务等功能。

以下是一些关键特性和用途:

1.高性能:Redis将数据存储在内存中,因此可以实现非常高的读写性能。它使用单线程模型和异步I/O操作来实现高效的处理请求。

2.丰富的数据结构:Redis不仅仅支持简单的字符串键值对存储,还提供了各种数据结构,如哈希表(hashes)、列表(lists)、集合(sets)和有序集合(sorted sets)。这使得Redis非常适合于在内存中处理各种类型的数据。

3.持久化:Redis提供了两种方式的持久化机制,即RDB(Redis数据库文件)和AOF(Append-only File)。RDB通过将数据集快照写入磁盘,以便在重新启动时重新加载数据。而AOF则通过记录所有写操作来实现持久化。

4.主从复制:Redis支持主从复制,可以将一个Redis实例配置为主服务器,而其他实例作为从服务器。主服务器上的写操作会被自动地复制到所有从服务器上,从而实现数据的冗余备份和负载均衡。

5.发布与订阅:Redis支持发布与订阅模式,允许客户端订阅一个或多个频道,以接收特定类型的消息。这使得Redis非常适合于构建实时应用程序、消息队列和聊天系统等。

6.事务支持:Redis支持事务操作,可以将多个命令打包成一个事务进行执行。通过MULTI、EXEC、DISCARD和WATCH等命令,可以实现原子性的提交或回滚多个命令。

7.缓存:由于Redis的快速读写能力和丰富的数据结构,它经常被用作缓存层。将经常访问的数据存储在Redis中,可以极大地提升应用程序的性能和响应时间。

总之,Redis是一款功能强大且灵活的内存数据存储系统,适用于处理高速读写和实时数据处理的应用场景,例如缓存、会话存储、计数器、排行榜和消息队列等。

😊2. 环境配置

下面进行安装运行:

# ubuntu安装
sudo apt install redis-server
# 检查运行状态
sudo systemctl status redis-server
# 测试服务器是否正常
redis-cli ping (可以通过redis-cli进入客户端)
# 配置远程连接
sudo gedit /etc/redis/redis.conf
将 bind 127.0.0.1 ::1 改为 bind 0.0.0.0
# 设置密码
找到# requirepass foobared 改为 requirepass 自己的密码
sudo systemctl redis-server restart

服务端配置完成后,可以安装图形化工具Redis desktop manager便于管理。

可通过ssh远程连接到远端的redis数据库。

在这里插入图片描述

😆3. 使用说明

首先安装redis c++依赖:sudo apt-get install libhiredis-dev

下面是一个数据库操作示例:

#include <iostream>
#include <hiredis/hiredis.h>

int main()
{
    // 连接 Redis 服务器
    redisContext *redis = redisConnect("127.0.0.1", 6379);

    // 检查连接是否成功
    if (redis == NULL || redis->err)
    {
        std::cout << "无法连接到 Redis 服务器:" << redis->errstr << std::endl;
        return 1;
    }

    // 执行 AUTH 命令,提供密码
    redisReply *reply = (redisReply *)redisCommand(redis, "AUTH password");

    // 检查认证是否成功
    if (reply == NULL || reply->type == REDIS_REPLY_ERROR)
    {
        std::cout << "Redis 认证失败:" << reply->str << std::endl;
        freeReplyObject(reply);
        redisFree(redis);
        return 1;
    }

    std::cout << "Redis 认证成功!" << std::endl;
    freeReplyObject(reply);

    // 执行 SET 命令
    reply = (redisReply *)redisCommand(redis, "SET key1 value1");
    std::cout << "SET 命令执行结果:" << reply->str << std::endl;
    freeReplyObject(reply);

    // 执行 GET 命令
    reply = (redisReply *)redisCommand(redis, "GET key1");
    std::cout << "GET 命令执行结果:" << reply->str << std::endl;
    freeReplyObject(reply);

    // 关闭连接
    redisFree(redis);

    return 0;
}

编译运行:

g++ main.cpp -o redis_example -lhiredis
Redis 认证成功!
SET 命令执行结果:OK
GET 命令执行结果:value1

在这里插入图片描述

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Emacs之改造最快文本搜索工具ripgrep(一百一十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

微服务远程调用openFeign简单回顾(内附源码示例)

目录 一. OpenFeign简介 二. OpenFeign原理 演示使用 provider模块 消费者模块 配置全局feign日志 示例源代码: 一. OpenFeign简介 OpenFeign是SpringCloud服务调用中间件&#xff0c;可以帮助代理服务API接口。并且可以解析SpringMVC的RequestMapping注解下的接口&#x…

Android12之快速查找静态注册jni函数方法(一百六十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

C++初阶--C++入门

目录 前言C关键字命名空间命名空间的定义命名空间的使用加命名空间名称及作用域限定符使用using namespace 命名空间名称引入使用using将命名空间中的成员引入 C的输入与输出缺省参数全缺省半缺省参数 函数重载参数类型不同参数个数不同参数类型顺序不同 引用引用特性 常引用使…

可视化bi工具datart部署到k8s

目录 1. 前言 2. 安装 2.1 mysql初始化 2.2 datart配置文件持久化 2.3 文件挂载 2.4 部署 3. 登录及创建管理帐号 1. 前言 datart 是新一代数据可视化开放平台&#xff0c;支持各类企业数据可视化场景需求&#xff0c;如创建和使用报表、仪表板和大屏&#xff0c;进行可视…

Python面向对象(三)(继承、封装)

面向对象的三大特性 面向对象编程&#xff0c;是许多编程语言都支持的一种编程思想。 简单理解是&#xff1a;基于模板&#xff08;类&#xff09;去创建实体&#xff08;对象&#xff09;&#xff0c;使用对象完成功能开发。 面向对象包含3大主要特性&#xff1a; 封装 封…

ssl证书安装后还是显示不安全怎么办?解决办法来了

ssl证书安装后还是显示不安全怎么办&#xff1f;一般网站在部署安装ssl证书之后&#xff0c;浏览器的不安全显示就会消除。但有时候&#xff0c;在证书安装完成后&#xff0c;浏览器仍然会出现不安全提示&#xff0c;这时候我们可以按照以下的步骤一一排查解决。 1、确认安装的…

numpy广播机制介绍

广播 广播机制的意义&#xff1a;广播描述了在算术运算期间NumPy如何处理具有不同形状的数组。受某些约束条件的限制&#xff0c;较小的数组会在较大的数组中“广播”&#xff0c;以便它们具有兼容的形状。 在对两个数组进行操作时&#xff0c;NumPy按元素对它们的形状进行比…

UE5.1移动端PreintegratedSkinBxDF解析

Part 1 头文件 MobileBasePassPixelShader.usf 主要看Main函数&#xff1a; #if MOBILE_MULTI_VIEWResolvedView ResolveView(BasePassInterpolants.MultiViewId); #elseResolvedView ResolveView(); #endif这玩意Shader文件找不到&#xff0c;感觉是个全局变量的东西。万幸…

【JDK新特性】必会_Stream API

【必看】原创声明&#xff1a;转载请注明作者 & 文章来源&#xff1a;都在用Stream流&#xff1f; ​​​​​​​ hello&#xff0c;我是小索奇&#xff0c;这次讲解JDK 8新特性的重点&#xff01;Stream流&#xff0c;到后期学习框架时候你会发现大量的Stream流出现&…

波奇学C++:写实拷贝,_buf数组

我们知道当自定义对象如果在堆上开空间&#xff0c;那么拷贝构造时会深拷贝&#xff0c;深拷贝会加大内存开销&#xff0c;用写实拷贝(也叫延迟拷贝)可以在深浅拷贝中取得平衡。 浅拷贝问题&#xff1a; 析构两次 一个对象修改会影响另一个 用引用计数来解决析构问题 拷贝构造时…

商品库存管理系统设计与实现(Vue+SpringBoot+MySQL)

一、项目背景 当今&#xff0c;我国科技发展日新月异&#xff0c;各类企业迅速崛起&#xff0c;商品类型日益繁多&#xff0c;产品数量急剧增加&#xff0c;企业经营模式越来越多样&#xff0c;信息处理量不断加大&#xff0c;对库存管理提出了更高的要求。通过本系统&#xff…

[详细教程+渠道对接+实战陪跑社区]抖音超火小说推文新玩法

科思创业汇 大家好&#xff0c;这里是科思创业汇&#xff0c;一个轻资产创业孵化平台。赚钱的方式有很多种&#xff0c;我希望在科思创业汇能够给你带来最快乐的那一种&#xff01; 本人为科思创业汇&#xff0c;分享网络项目案例&#xff01; 是啊&#xff0c;公益活动又来…

白话机器学习笔记(二)学习分类

分类用图形来解释&#xff0c;把他想象为有大小有方向带箭头的向量。 设权重向量为 w w w&#xff0c;虚线为使权重向量称为法线向量的直线。 直线的表达式为&#xff1a; w ⋅ x 0 w\cdot x0 w⋅x0 (两个向量的内积) 也可写为&#xff1a; w ⋅ x ∑ i 1 n w i x i w 1…

Python(基于Pyusb)与C#(基于LibUsbDotNet)USB通信速度对比

1、实验背景 项目需求&#xff1a;下位机ZYNQ&#xff0c;需设计上位机与其通信&#xff0c;通信协议USB2.0。ZYNQ端固定Buffer长度为16k&#xff0c;即上位机向ZYNQ发送任意数据&#xff0c;ZYNQ每次反馈16k长度buffer。现对Python(基于Pyusb)与C#(基于LibUsbDotNet)的USB通信…

Windows 微信更新内核(小程序框架)的指南

WMPF-PC 更新指引&#xff1a; 准备工作 1. 安装最新微信客户端&#xff08; https://dldir1.qq.com/weixin/Windows/WeChatSetup.exe &#xff09; 2. 在微信在搜索栏输入:showcmdwnd (包括前面冒号) 中输入以下代码以开启 wmpf 新内核版本(已经是现网默认&#xff0c;可以…

STM32+FPGA的导常振动信号采集存储系统

摘 要 &#xff1a; 针 对 工 厂 重 要 设 备 运 输 途 中 可 能 损 坏 的情 况 &#xff0c; 本 文 设计 了一 套 采 用 &#xff33;&#xff34;&#xff2d;&#xff13;&#xff12;&#xff26;&#xff11;&#xff10;&#xff13;&#xff0b;&#xff26;&#xff3…

2023年FPGA好就业吗?

FPGA岗位有哪些&#xff1f; 从芯片设计流程来看&#xff0c;FPGA岗位可以分四类 产品开发期&#xff1a;FPGA系统架构师 芯片设计期&#xff1a;数字IC设计工程师、FPGA开发工程师 芯片流片期&#xff1a;FPGA验证工程师 产品维护期&#xff1a;FAE工程师 从行业上来说&#x…

后端Linux软件安装大全[JDK、Tomcat、MySQL、Irzsz、Git、Maven、Redis、Nginx...持续更新中]

文章目录 前言1.软件安装方式2.安装jdk3.安装Tomcat4.安装MySQL5.安装lrzsz6. 安装Git7. 安装Maven8. 安装Redis9. 安装Nginx 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能帮到一些萌新…

redhat官网下载7.9版本iso

redhat官方地址 https://developers.redhat.com/products/rhel/download 下载前会让你先登录&#xff0c;如果没有账号就需要先去注册账号哟。