众所周知MongoDB使用BSON构建数据,然后使用者调用MongoDB的接口,以BSON为参数,将存储到本地
Redis则是键值对的方式,支持的数据类型有五种:
1、string(字符串);
2、hash(哈希);
3、list(列表);
4、set(集合);
5、zset(sorted set:有序集合)。
背景:
原先为了将数据写入BSON,编写了一个数据类,里面有write_int、write_float、write_string、write_int_array等函数接口,用户调用这些接口,将数据写入到这个类中(比如一个用户的手机号码、身份证号、当前等级、经验值等),采用用户信息来举例,新建一个类,可以存储一个用户的所有信息。
编写了一个数据操作类,这个类的作用是
1、将数据类转换成BSON,或将BSON转换成数据类;
2、将BSON数据本地化保存。
经过一些调研,想出两种方案
一、重新编写出一套数据操作方法
即重新编写出一套write_int、write_float、write_string、write_int_array等函数接口,具体做法是定义一个基类,在基类中定义纯虚函数write_int、write_float、write_string、write_int_array等,然后实现一个Redis类继承这个基类,并在Redis类中实现具体的函数接口,以后项目需要存储数据,就采用多态的方式调用这一套接口。
二、采用BSON格式存储信息到Redis
这个方案实现起来比较简单,而且对原项目改动较小。方法是将原先的数据库操作类中的数据库操作,改为Redis,但是这里涉及到了MongoDB指令转换成Redis指令的问题,比如MongoDB如果有一个语句"db.userInfo.find({"age": 22});",那么Redis该怎么把这个指令转换成自身指令实现该有的功能?