在Ubuntu系统中测试Redis连接池——redis++方案

这篇具有很好参考价值的文章主要介绍了在Ubuntu系统中测试Redis连接池——redis++方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安装依赖

sudo apt install gcc
sudo apt install g++
sudo apt install cmake
sudo apt install libhiredis-dev
sudo apt install libssl-dev

安装redis++

git clone https://github.com/sewenew/redis-plus-plus.git
cd redis-plus-plus
mkdir build
cd build
cmake ..
make
sudo make install
cd ..

代码

#include <iostream>
#include <thread>
#include <sw/redis++/redis++.h>
#include <sw/redis++/connection.h>
#include <sw/redis++/connection_pool.h>
using namespace sw::redis;

void test_multithreads(Redis redis, int thread_num, int times) {
    std::vector<std::string> keys;
    keys.reserve(thread_num);
    for (auto idx = 0; idx != thread_num; ++idx) {
        auto key = "multi-threads::" + std::to_string(idx);
        keys.push_back(key);
        redis.set(key, key);
    }

    std::vector<std::thread> workers;
    workers.reserve(thread_num);
    for (const auto &key : keys) {
        workers.emplace_back([&redis, key, times]() {
                                try {
                                    for (auto i = 0; i != times; ++i) {
                                        auto val = redis.get(key);
                                        if (!val) {
                                            std::cout<< "failed to test multithreads, cannot get value of " + key << std::endl;
                                            return;
                                        }
                                    }
                                } catch (std::exception &e) {
                                    std::cerr<< "failed to test multithreads, " << e.what() << std::endl;
                                    return;
                                }
                            });
    }

    for (auto &worker : workers) {
        worker.join();
    }
}

int main() {
    ConnectionOptions opts;
    opts.host = "127.0.0.1";
    opts.port = 6379;
    opts.socket_timeout = std::chrono::milliseconds(50);
    opts.keep_alive = true;

    ConnectionPoolOptions pool_opts;
    pool_opts.size = 300;
    
    auto thread_num = 500;
    auto times_in_one_second = 1000000;
    test_multithreads(Redis(opts, pool_opts), thread_num, times_in_one_second);
}

上面代码启动了500个线程,它们公用一个redis连接池。该池子上限被设置为300个。每个线程内部会查询1000000次,以维持程序运行,让我们可以观察到中间连接数变化。
使用下面的脚本进行编译

g++ -std=c++17 -o main main.cpp /usr/local/lib/libredis++.a /usr/lib/x86_64-linux-gnu/libhiredis.a -pthread

查看连接数

使用下面命令进入交互界面

redis-cli -h 127.0.0.1 -p 6379

然后使用下面命令查看连接数,connected_clients为1,即当前redis-cli的连接。

info clients

# Clients
connected_clients:1
client_recent_max_input_buffer:8
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0

在一个新窗口中运行上面编译的测试程序。

./main 

然后再查看连接数

# Clients
connected_clients:301
client_recent_max_input_buffer:8
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
clients_in_timeout_table:0

可以看到连接数增加了300。这个和我们代码中设置的连接池大小上限匹配。文章来源地址https://www.toymoban.com/news/detail-727587.html

参考资料

  • https://github.com/sewenew/redis-plus-plus/tree/master

到了这里,关于在Ubuntu系统中测试Redis连接池——redis++方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Xshell 连接虚拟机Ubuntu系统失败解决方案

    背景知识: Xshell 是一个强大的安全终端模拟软件,可以进行远程登录,它支持 SSH1, SSH2, 以及 Microsoft Windows 平台的 TELNET 协议。 xshell通过ip连接,所以需要知道虚拟机的IP地址 使用XShell的主要目的是在Windows环境下登录Linux终端,以后,我们也可以通过这种方式把本机与远端服

    2024年02月10日
    浏览(52)
  • centos7、ubuntu、openkylin、ky10Server等系统docker安装mysql、redis

    默认密码都是 123456 mysql确认    redis确认    

    2024年02月13日
    浏览(58)
  • FinalShell 远程连接 Linux(Ubuntu)系统

    Linux 系列教程: VMware 安装配置 Ubuntu(最新版、超详细) FinalShell 远程连接 Linux(Ubuntu)系统 Ubuntu 系统安装 VS Code 并配置 C++ 环境 ➡️➡️➡️提出一个问题:为什么使用 FinalShell 连接,而不直接用 Linux(Ubuntu)自带的终端??? [Step 1]: 进入 HOSTBUF 查看 FinalShell 相关信息

    2024年04月22日
    浏览(37)
  • 【Redis】Ubuntu22.04安装Redis

    前言:最近想要学习用Python控制Redis的方法,但是Redis官网是不支持Windows直接安装的,各种大佬的Windows移植版本也比较老,虽然够用,但是也希望使用官网版本。网上的各种安装教程或多或少都存在一点问题,这里我针对我所使用的服务器版本安装Redis服务进行整理,若与我

    2024年02月06日
    浏览(39)
  • Ubuntu下安装Redis

    Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖: 利用xftp传输工具将redis安装包上传到linux上,最好是放在/usr/local/src下 解压缩: 解压后,进入redis目录下 安装make: 安装完成后,进入/usr/local/bin 使用\\\"ll\\\"命令得到如下结果即是安装成功 常见查看命令: redis的启

    2024年02月05日
    浏览(28)
  • ubuntu安装单个redis服务

    1.apt-get install redis-server 使用lighthouse用户这样操作会报与权限有关的错误,   改成使用root账号操作     2.安装完成后,Redis服务器会自动启动,查看进程是否正常启动 ps -axu|grep redis redis    18689  0.1  0.4  40136  6860 ?        Ssl  09:12   0:01 /usr/bin/redis-server 127.0.0.1:6379 root  

    2024年02月16日
    浏览(29)
  • redis安装与配置(Ubuntu)

    目录 1. 切换到 root 用户 2. 搜索安装包 3. 安装 redis 4. 查看 redis 是否正常存在 5. 修改ip 6. 重新启动服务器 7. 连接服务器 1. 切换到 root 用户 通过 su 命令切换到 root 用户。 2. 搜索安装包 apt search redis  这里安装的是下面的版本: 3. 安装 redis apt install redis 输入 y 进行安装  4. 查

    2024年02月03日
    浏览(39)
  • Ubuntu下搭建Redis分片集群

    目录 准备实例和配置 启动分片集群 测试分片集群 分片集群需要的节点数量较多,搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,并且master之间通过心跳机制互相监听,此模式下不需要哨兵监听结构如下  同一台虚拟机中开启6个redis实例,模拟分片

    2024年02月16日
    浏览(49)
  • Ubuntu下配置Redis哨兵集群

    目录 准备实例和配置 启动哨兵集群 测试配置 搭建一个三节点形成的Sentinel集群,来监管Redis主从集群。 三个sentinel哨兵实例信息如下: 节点 IP PORT s1 192.168.22.135 27001 s2 192.168.22.135 27002 s3 192.168.22.135 27003 要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配

    2024年02月16日
    浏览(31)
  • 【Redis安装】Ubuntu和Centos

    此处安装的是 Redis5 在 Ubuntu 系统上 切换到 root 用户下,su 命令切换 使用 apt 可以搜索 redis 相关软件包 使用 apt 命令安装 redis 手动修改配置文件 redis.conf 修改以下两处 重启服务器 使用客户端连接 输入命令 ping , 出现 PONG 表示连接成功 退出客户端 在 Centos 上安装 在 Centos 上安

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包