Aerospike C客户端手册———键-值存储—读取记录
来源:互联网 发布:大众网络报编辑 编辑:程序博客网 时间:2024/05/18 02:15
读取记录
Aerospike C 客户端AP提供四个从数据库读取一条记录的操作:
aerospike_key_get()
— 读取一条记录所有bin数据。aerospike_key_select()
— 读取一条记录指定bin数据。aerospike_key_exists()
— 检查一条记录的存在性。aerospike_key_operate()
— 在一条记录上执行操作,包括对指定bin的读取操作。
此章节主要讨论前三个操作,aerospike_key_operate()操作将在后面的【记录高级操作】章节中讨论。
后面的代码引用自示例目录【examples/basic_examples/get】,由Aerospike C客户端安装包自带。
请先阅读【建立连接】章节内容,理解如何建立与集群的连接。
初始化键(KEY)
读取记录时,数据库需要通过键(key)来标识这条记录。下面我们为示例创建一个键。用来做键的是字符串”test-key",数据所在的namespace名称为“test”、set名称为“test-set”。其它数据类型也可用作键,比如:整型(integer)或二进制大对象块(blob)。
as_key key;as_key_init_str(&key, "test", "test-set", "test-key");
读取一条记录所有bin数据
使用aerospike_key_get()操作,读取一条记录所有bin数据。此操作尽可能多地以bin数据填充参数中的记录对象。记录对象(第1行)初始化为空指针(NULL)。当记录对象为空指针时,允许读取操作在堆上为记录分配足够多的bin对象空间,以容纳从数据库返回的所有bin数据。
as_record* p_rec = NULL;if (aerospike_key_get(&as, &err, NULL, &key, &p_rec) != AEROSPIKE_OK) { fprintf(stderr, "err(%d) %s at [%s:%d]\n", err.code, err.message, err.file, err.line);}as_record_destroy(rec);
当不再需要一条记录对象时,一定要通过as_record_destroy()操作释放所占用资源。
读取一条记录指定bin数据
若精确地知道需从数据库中读取的bin名称,那么最好在读取时指定这些bin,而不是获取整条记录。为了指定需从服务器取回的bin,首先要创建一个以空指针(NULL)结束的字符串(string)数组,其中每个字符串是一个bin名称;然后调用aerospike_key_select()操作读取数据。
下面的代码示意用包含两个bin名称的字符串数组,从数据库中读取名称为”test-bin-1“和”test-bin-3“的bin数据。数组以空指针(NULL)结束,告诉读取操作后面不再有下一个bin名称。
as_record* p_rec = NULL;static const char* bins_1_3[] = { "test-bin-1", "test-bin-3", NULL };if (aerospike_key_select(&as, &err, NULL, &key, bins_1_3, &p_rec) != AEROSPIKE_OK) { fprintf(stderr, "err(%d) %s at [%s:%d]\n", err.code, err.message, err.file, err.line);}as_record_destroy(rec);
当不再需要一条记录对象时,一定要通过as_record_destroy()操作释放所占用资源。
遍历记录的bin
请参见最佳实践章节中【遍历记录的bin】。
检查记录的存在性
经常十分简单地需要知道一个记录是否存在于数据库中。aerospike_key_exists()操作用记录的元数据填充参数中的记录对象,比如:分代(generation)编号、生存时间,可用来检查记录是否存在。
as_record* p_rec = NULL;if (aerospike_key_exists(&as, &err, NULL, &key, &p_rec) == AEROSPIKE_ERR_RECORD_NOT_FOUND) { fprintf(stderr, "record not found");}
读取事务超时控制
应用需要在预定时间内响应调用者的情况下,可设置读取调用时的事务超时时间,修改write_policy.timeout为相应的毫秒数。
- Aerospike C客户端手册———键-值存储—读取记录
- Aerospike C客户端手册———键-值存储—批量读取记录
- Aerospike C客户端手册———键-值存储—写入记录
- Aerospike C客户端手册———键-值存储—删除记录
- Aerospike C客户端手册———键-值存储—记录高级操作
- Aerospike C客户端手册——简介
- Aerospike C客户端手册——安装
- Aerospike C客户端手册———用户定义函数—应用UDF到记录
- Aerospike C客户端手册———查询—查询记录
- Aerospike C客户端手册———聚合—记录聚合
- Aerospike C客户端手册———数据扫描—记录扫描
- Aerospike C客户端手册———数据扫描—记录变更
- Aerospike C客户端手册———最佳实践—记录使用
- Aerospike C客户端手册———目录
- Aerospike C客户端手册———简介
- Aerospike C客户端手册———入门指南
- Aerospike C客户端手册———安装
- Aerospike C客户端手册———Ubuntu 12 安装
- IoC模式
- 将eclipse java程序打包成jar的总结(包括工程中没有引用外部jar包和有引用外部jar包两种情况)
- linux安装libpcap
- cocos2d-x和Android学习思考
- java 数组
- Aerospike C客户端手册———键-值存储—读取记录
- Exception in thread "Driver" java.io.IOException: Log directory hdfs://vanzin-krb-1.vpc.cloudera.com
- linux命令“sudo”
- LigerUI之Grid使用详解(一)——显示数据
- 【字符串】大数的乘法(包括浮点数)
- linux中如何读取串口收发数据
- Iterm2配色
- 简单选择排序
- MIT JOS # RoundRobin Scheduling#