hiredis
简介
基于hiredis实现的redis数据库操作
Reids简介
- Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
- Redis 是完全开源的, 遵守 BSD 协议,是一个高性能的 key-value 数据库。
与其他 key - value 缓存产品有以下三个特点:
特点
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
Redis优势
- 性能极高 – Redis能支持超过 100K+ 每秒的读写频率。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis劣势
数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
Hiredis简介
- Hiredis是redis数据库一个轻量的C语言客户端库。
轻量:它只是简单的提供了对redis操作语句支持的接口,并没有实现具体的操作语句的功能。
- Hiredis是一个Redis的C客户端库函数,基本实现了Redis的协议的最小集。
仓库地址
组件接口
async_client.gs
支持异步阻塞执行的redis客户端对象
函数原型 | 函数作用 |
---|---|
object get_internal_client() | 获取实际执行的redis客户端连接对象 |
mixed redis_command(...) | 异步阻塞操作 - 执行redis命令 |
mixed redis_command_ex(...) | 执行redis命令(可用于处理二进制数据) |
mixed redis_eval(...) | 异步阻塞操作 - 执行redis命令-使用Lua 解释器来执行脚本 |
bool start_pipline() | 异步阻塞操作 - 开启管道 |
void end_pipline() | 异步阻塞操作 - 关闭管道 |
bool is_pipline() | 异步阻塞操作 - 判断是否开启了管道 |
bool pipline_set(...) | 异步阻塞操作 - 添加一个管道操作 |
array pipline_execute() | 异步阻塞操作 - 执行所有管道操作 |
void select_db(int db_index) | 异步阻塞操作 - 切换到指定索引号的数据库 |
client.gs
redis的客户端连接对象
函数原型 | 函数作用 |
---|---|
bool connect(mixed timeout_seconds = -1) | 连接redis服务器 |
bool reconnect(int try_count = 10) | 重连redis服务器 |
mixed redis_command(...) | 执行redis命令(无法处理二进制数据) |
mixed redis_command_ex(...) | 执行redis命令(可用于处理二进制数据) |
mixed redis_eval(string lua_script, array key_list, array arg_list) | 执行redis命令-使用Lua 解释器来执行脚本 |
bool start_pipline() | 开启管道 |
void end_pipline() | 关闭管道 |
bool is_pipline() | 判断是否开启了管道 |
bool pipline_set(...) | 添加一个管道操作 |
array pipline_execute() | 执行所有管道操作 |
mixed load_reply(redisReply reply) | 将redisReply转换为gs返回值 |
mixed load_reply_ex(redisReply reply) | 将redisReply转换为gs返回值 |
object get_asnyc_client() | 获取支持异步执行的客户端连接对象 |
mixed check_pwd(string pwd) | 验证密码 |
void select_db(int db_index) | 切换到指定索引号的数据库 |
hiredis.gs
函数原型 | 函数作用 |
---|---|
void setup_redis(map cfg) | 初始化hiredis |
bool is_inited() | 是否完成hiredis的初始化 |
object worker() | 获取工作线程池对象 |
object redis_connect(string host, int port) | 连接reids主机 |
object redis_connect_with_timeout(string host, int port, mixed timeout_seconds = 5) | redis连接-超时限制 |
object redis_connect_with_timeout_auth(string host, int port, string passwd, mixed timeout_seconds = 5) | redis连接-密码认证 |