• C/C++轻量级并发TCP服务器框架Zinx-游戏服务器开发006:基于redis查找玩家姓名+游戏业务实现总结


    1 Redis的安装与API的使用

    1.1 安装目录及环境变量

    7.2版本redis-cli命令在bin目录下:

    vim /etc/profile
    
    export REDIS_HOME=/usr/local/redis/bin
    export PATH=$PATH:$REDIS_HOME
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述在这里插入图片描述

    1.2 设置远程客户端连接和守护进程

    cp /usr/local/redis/redis-7.2.3/redis.conf /usr/local/redis/bin/
    vim /usr/local/redis/bin/redis.conf
    
    • 1
    • 2

    在这里插入图片描述

    1.3 启动redis

    redis-server /usr/local/redis/bin/redis.conf
    
    • 1

    1.4 Hiredis API的使用

    git clone https://github.com/redis/hiredis.git
    cd hiredis
    make
    make install
    
    • 1
    • 2
    • 3
    • 4
    mkdir -p /usr/local/include/hiredis /usr/local/include/hiredis/adapters /usr/local/:/usr/local/protobuf/lib/:/opt/instantclient_12_2
    cp -pPR hiredis.h async.h read.h sds.h alloc.h sockcompat.h /usr/local/include/hiredis
    cp -pPR adapters/*.h /usr/local/include/hiredis/adapters
    cp -pPR libhiredis.so /usr/local/:/usr/local/protobuf/lib/:/opt/instantclient_12_2/libhiredis.so.1.2.1-dev
    cd /usr/local/:/usr/local/protobuf/lib/:/opt/instantclient_12_2 && ln -sf libhiredis.so.1.2.1-dev libhiredis.so && ln -sf libhiredis.so.1.2.1-dev libhiredis.so.1
    cp -pPR libhiredis.a /usr/local/:/usr/local/protobuf/lib/:/opt/instantclient_12_2
    mkdir -p /usr/local/:/usr/local/protobuf/lib/:/opt/instantclient_12_2/pkgconfig
    cp -pPR hiredis.pc /usr/local/:/usr/local/protobuf/lib/:/opt/instantclient_12_2/pkgconfig
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1.5 我的动态库和头文件

    根据上述的输出信息,我把动态库直接拷贝到了系统目录下,程序加载的时候加载的是libhiredis.so.1.2.1-dev

     cp /usr/local/:/usr/local/protobuf/lib/:/opt/instantclient_12_2/libhiredis.so /usr/lib
     
     cp /usr/local/:/usr/local/protobuf/lib/:/opt/instantclient_12_2/libhiredis.so.1.2.1-dev /usr/lib
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    头文件的位置没有改变,使用的默认设置

    usr/local/include/hiredis
    
    • 1
    • 路径和库要根据实际情况设置
    • C函数库,包含头文件 ,编译时指定链接参数为-L/usr/lib -lhiredis
    • 运行时若提示找不到共享库,则在.bashrc最末端添加一句export LD_LIBRARY_PATH=/usr/lib,重新打开终端运行。
    • redisConnect跟数据库建立链接(redisFree释放掉)。
    • redisCommand发命令并通过返回值取出结果(freeReplyObject释放掉)。

    2 Redis的使用

    2.1 初始化时候

    //记录当前姓名到redis的game_name
    	//1 连接redis
    	auto context = redisConnect("127.0.0.1", 6379);
    	//2 发送lpush命令
    	if (NULL != context)
    	{
    		freeReplyObject(redisCommand(context, "lpush game_name %s", szName.c_str()));
    		redisFree(context);
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.2 结束的时候

    	//从redis  game_name中删掉当前姓名
    	auto context = redisConnect("127.0.0.1", 6379);
    	if (NULL != context)
    	{
    		freeReplyObject(redisCommand(context, "lrem game_name 1 %s", szName.c_str()));
    		redisFree(context);
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3 测试

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    4 Makefile

    game:*.cpp *h
    	g++ -Wall -g -pthread -std=c++11 $^ -o $@ -lzinx -lpthread -lprotobuf
    
    • 1
    • 2

    在这里插入图片描述

    5 游戏业务总结

    在这里插入图片描述

  • 相关阅读:
    时序预测 | MATLAB实现ICEEMDAN-IMPA-LSTM时间序列预测
    SQL sever中的存储过程
    基于PyQt5GUI的人脸识别系统设计与实现
    基于冷冻电镜图像的低通滤波(Lowpass Filter)算法
    被华为、阿里等知名4位一线技术专家联手吹爆的SSM实战文档
    5.6 标准I/O(格式化输入输出)
    Vue的生命周期
    String的理解
    LeetCode 0525. 连续数组:哈希表 + 前缀和
    深度操作系统 23预览版:自研软件包格式
  • 原文地址:https://blog.csdn.net/jiangchufeng123/article/details/134288436