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

文章目录

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

1 Redis的安装与API的使用

1.1 安装目录及环境变量

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

c 复制代码
vim /etc/profile

export REDIS_HOME=/usr/local/redis/bin
export PATH=$PATH:$REDIS_HOME

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

c 复制代码
cp /usr/local/redis/redis-7.2.3/redis.conf /usr/local/redis/bin/
vim /usr/local/redis/bin/redis.conf

1.3 启动redis

c 复制代码
redis-server /usr/local/redis/bin/redis.conf

1.4 Hiredis API的使用

cpp 复制代码
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

c 复制代码
 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

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

c 复制代码
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 初始化时候

c 复制代码
//记录当前姓名到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);
	}

2.2 结束的时候

c 复制代码
	//从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

cpp 复制代码
game:*.cpp *h
	g++ -Wall -g -pthread -std=c++11 $^ -o $@ -lzinx -lpthread -lprotobuf

5 游戏业务总结

相关推荐
蒸蒸yyyyzwd1 小时前
cpp 选手秋招学习笔记 day33
c++·笔记·求职招聘
wuyk5551 小时前
【Socket 进阶之路】第 3 章 TCP 三次握手 & 四次挥手深度剖析|连接建立、断开、状态机、TIME_WAIT 核心工程问题
服务器·开发语言·网络·物联网·网络协议·tcp/ip
平头哥AI7 小时前
Day 22 _ 包装错误别丢链_%w、errors.Is 与 errors.As
android·服务器·学习·golang·go
hansang_IR7 小时前
【题解】P4460 [CQOI2018] 解锁屏幕
c++·算法
ChampaignWolf8 小时前
在 SAP S/4HANA 内部基于 ICF Handler 从零实现 ABAP MCP Server:架构、代码与踩坑实录
c++·架构·sap·abap·mcp
新时代牛马8 小时前
PCI与PCIe 硬件原理、配置空间/BAR 与 Linux 驱动完整篇:从 LTSSM、TLP 到 ECAM 与probe
java·linux·服务器
wuyk5559 小时前
从零吃透 MQTT 通信|第 8 章 FreeRTOS 多任务架构下 MQTT 工程架构,任务拆分、队列解耦、临界区保护
c语言·开发语言·stm32·学习·架构
尘客-追梦9 小时前
Day 01:插件化之前,先看清 ABI 这堵墙
开发语言·c++·qt
有点。10 小时前
*C++哈夫曼树与哈夫曼编码
java·c++·servlet
两点王爷10 小时前
解决 Linux 中 version `CXXABI_1.3.8‘ not found 报错
linux·运维·服务器