设为首页 加入收藏

TOP

初学Redis(2)――用Redis作为Mysql数据库的缓存(二)
2015-07-24 11:12:32 来源: 作者: 【 】 浏览:4
Tags:初学 Redis 作为 Mysql 数据库
t num_col = meta->getColumnCount(); // 将结果集中所有行对应的所有HASH键存入该SET,SET键包含了结果集的标识符 string redis_row_set_key("resultset.hash:" + resultset_id); redisReply *reply; string ttlstr; stringstream ttlstream; ttlstream << ttl; ttlstr = ttlstream.str(); // 结果集中的每一行对应于一个HASH,将结果集的所有行都存入相应HASH中 resultset->beforeFirst(); while (resultset->next()) { string redis_row_key; // HASH键名,由前缀和HASH编号组成 stringstream keystream; keystream << prefix << num_row; redis_row_key = keystream.str(); for (int i = 1; i <= num_col; ++i) { string col_label = meta->getColumnLabel(i); string col_value = resultset->getString(col_label); // 将结果集中一行的字段名和对应值存入HASH reply = static_cast(redisCommand(redis_connection, "HSET %s %s %s", redis_row_key.c_str(), col_label.c_str(), col_value.c_str())); freeReplyObject(reply); } // 将HASH键加入SET中 reply = static_cast(redisCommand(redis_connection, "SADD %s %s", redis_row_set_key.c_str(), redis_row_key.c_str())); freeReplyObject(reply); // 设置HASH的过期时间 reply = static_cast(redisCommand(redis_connection, "EXPIRE %s %s", redis_row_key.c_str(), ttlstr.c_str())); freeReplyObject(reply); ++num_row; } // 设置SET的过期时间 reply = static_cast(redisCommand(redis_connection, "EXPIRE %s %s", redis_row_set_key.c_str(), ttlstr.c_str())); freeReplyObject(reply); return redis_row_set_key; // 返回SET键,以便于其他函数获取该SET中的内容 }

至此,我们已经给出了两种存储Mysql结果集的方案,这就是我们在篇首提出的第一个问题,即选择何种数据结构存储Mysql结果集的答案。下一篇文章将研究第二个问题,即数据结构键的标识符选择问题。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇为Druid监控配置访问权限(配置访.. 下一篇aboutgpdbpasswordmd5

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)