跳到主要内容

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连接-密码认证