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

news/2024/11/30 18:47:21/

文章目录

  • 1 Redis的安装与API的使用
    • 1.1 安装目录及环境变量
    • 1.2 设置远程客户端连接和守护进程
    • 1.3 启动redis
    • 1.4 Hiredis API的使用
    • 1.5 我的动态库和头文件
  • 2 Redis的使用
    • 2.1 初始化时候
    • 2.2 结束的时候
  • 3 测试
  • 4 Makefile
  • 5 游戏业务总结

1 Redis的安装与API的使用

1.1 安装目录及环境变量

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

vim /etc/profileexport REDIS_HOME=/usr/local/redis/bin
export PATH=$PATH:$REDIS_HOME

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

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

cp /usr/local/redis/redis-7.2.3/redis.conf /usr/local/redis/bin/
vim /usr/local/redis/bin/redis.conf

在这里插入图片描述

1.3 启动redis

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

1.4 Hiredis API的使用

git clone https://github.com/redis/hiredis.git
cd hiredis
make
make install
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.5 我的动态库和头文件

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

 cp /usr/local/:/usr/local/protobuf/lib/:/opt/instantclient_12_2/libhiredis.so /usr/libcp /usr/local/:/usr/local/protobuf/lib/:/opt/instantclient_12_2/libhiredis.so.1.2.1-dev /usr/lib

在这里插入图片描述

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

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

2 Redis的使用

2.1 初始化时候

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

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);}

3 测试

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

4 Makefile

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

在这里插入图片描述

5 游戏业务总结

在这里插入图片描述


http://www.ppmy.cn/news/1205500.html

相关文章

设计模式--开篇

什么是设计模式 设计模式是软件开发过程中面临的通用问题的解决方案。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 按使用目的分类 创建型–主要用于创建对象 单例模式-某个类只能有一个实例&#xff0c;提供一个全局的访问点工厂方法模式-创建…

Linux系统生成免密码登录,保姆级教程

1、节点规划&#xff0c;我们这里为了简单&#xff0c;就直接采用root账号&#xff0c;生产中&#xff0c;需要创建专门的用户组和用户。 节点名称用户用户组密码ipnode1rootroot123456192.168.42.139node2rootroot123456192.168.42.140node3rootroot123456192.168.42.141 2、…

安卓 车轮视图 WheelView kotlin

安卓 车轮视图 WheelView kotlin 前言一、代码解析1.初始化2.初始化数据3.onMeasure4.onDraw5.onTouchEvent6.其他 6.ItemObject二、完整代码总结 前言 有个需求涉及到类似这个视图&#xff0c;于是在网上找了个轮子&#xff0c;自己改吧改吧用&#xff0c;拿来主义当然后&…

遇到java.security.AccessControlException:access denied怎么办?

今天工作中遇到了如下报错&#xff0c;记录一下解决方案。 目录 问题 分析 结论 问题 这个问题出现在openjdk8启动网页端Java应用。 Java Exception:java.security.AccessControlException:access denied("java.net.SocketPermission""22.188.130.11:9000…

React进阶之路(一)-- JSX基础、组件基础

文章目录 React介绍React开发环境搭建项目目录说明以及相关调整 JSX基础JSX介绍JSX中使用js表达式JSX列表渲染JSX条件渲染JSX样式处理JSX注意事项 组件基础组件的概念函数组件类组件事件绑定如何绑定事件获取事件对象传递额外参数 组件状态状态不可变表单处理受控表单组件非受控…

震裕转债上市价格预测

震裕转债-123228 基本信息 转债名称&#xff1a;震裕转债&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;11.95亿元。 正股名称&#xff1a;震裕科技&#xff0c;今日收盘价&#xff1a;58.85元&#xff0c;转股价格&#xff1a;61.57元。 当前转股价值 转债…

vue下使用Echarts5绘制基础图表

项目使用Vue3加Echarts5绘制的基本图表&#xff0c;图表自适应浏览器窗口大小 先上图&#xff0c;大屏小屏都可完美展示&#xff0c;纯属练手 一 先上图 1.任意缩放窗口的大小 2.平板 3.电脑 4.饼图 5.折线图 二 后上代码 <script lang"ts"> import {d…

【Springboot】Springboot引入JWT实现登录校验以及常见的错误解决方案

文章目录 前言一、JWT简单介绍二、token校验设计思路三、使用步骤Springboot部署JWT引入依赖&#xff1a;创建登录实体类后端&#xff1a;LoginController.java路由守卫函数 四、问题 前言 项目版本&#xff1a; 后端&#xff1a; Springboot 2.7、 Mybatis-plus、Maven 3.8.1…