1. Redis简介
Redis是一个开源软件项目(BSD许可),用ANSI C编写,适用于大多数的POSIX系统,是一个可用作数据库、缓存和消息代理的内存数据库。Redis是一个非关系型数据库,Redis可以存储键与五种不同数据结构类型之间的映射,这五种类型分别为:字符串、列表、集合、有序集合和散列。Redis通常将整个数据集保存在内存中,Redis通过两种不同的方式实现持久性:一种是快照,另一种是AOF(AppendOnly File)。Redis支持主从复制,来自任何Redis服务器的数据可以复制到任意数量的从站。Redis还包含发布/订阅、Lua脚本等其他功能。2. 资源获取
在官网下载第三方中间件的资源,Redis的官方下载网站为:https://redis.io/download。本文中使用的版本是redis-3.2.8,下载后解压文件,文件目录如图 2-1所示。
图 2-1 Redis解压后的文件
src目录包含Redis的实现,tests目录包含使用tcl语言实现的单元测试,deps目录包含Redis所需要使用的库,SylixOS只需要提供libc的POSIX兼容接口以及一个C编译器即可。
3. Linux平台编译
将文件夹拷贝到Linux平台下,由于文件夹中已有Makefile文件,所以可直接编译,Makefile文件如图 3-1所示。
图 3-1 Makefile文件
Redis可以手动选择内存分配器进行编译,Redis支持libc malloc以及jemalloc,并且在Linux系统上jemalloc是默认值,因此要强制使用libc malloc编译需要添加命令参数,编译命令如图 3-2所示。
图 3-2 编译命令
4. 移植工作
Redis采用的服务器客户端模型,并且支持命令行模式以及hiredis API接口,因此需要编译出服务器的可执行程序以及根据具体需求编译出客户端的可执行程序。4.1 服务器工程创建
在Real-Evo IDE中创建redis-server的应用工程,删除工程中src目录下的redis-server.c文件,导入源码包中的src和deps两个文件夹。导入完成后的工程文件如图 4-1所示。
图 4-1 工程文件
改为专家模式,修改源文件和头文件路径,头文件路径如图 4-2所示。
图 4-2 头文件路径
部分源文件如图 4 3所示。
图 4-3 源文件名
链接base工程内的cextern动态库,如图 4-4所示。