• 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 游戏业务总结

    在这里插入图片描述

  • 相关阅读:
    分布式是什么?
    【笔者感悟】笔者的学习感悟【二】
    数据结构【红黑树模拟实现】
    常见Web安全漏洞深入解析
    操作系统知识图谱
    网络编程:select的用法和原理
    HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE
    20张图说清楚 IP 协议
    探索ABP基础架构-下
    项目讲解:让你在IT行业面试中以开发、实施、产品更近一步
  • 原文地址:https://blog.csdn.net/jiangchufeng123/article/details/134288436