|
?/??wade
?????????2??
?????????????????1?
?????
???????????????????????????C++Java C#???Python JS??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
- ?????????????????????????????????????????????????????????
- ????????????????????????key-value???????????????????????key-value??value???????
- ???????????????SQL???????????????ORM????????????????????????????????????NoSQL???????????????key-value?????????????????????
??????????????????????
- class Serializable {
- public:
- /**
- * ?????????
- * @param buffer ???????
- * @param buffer_length ?????
- * @return ????? buffer ?????????? -1 ??????? buffer_length ???
- */
-
- virtual
-
- ssize_t
-
- SerializeTo
- (
- char
- *
- buffer
- ,
-
- int
- buffer_length
- )
-
- const
-
- =
-
- 0
- ;
-
- /**
- * @brief ??? buffer ??? length ?????????????
- *@return ?? 0 ?????????????
- */
-
- virtual
-
- int
-
- SerializeFrom
- (
- const
-
- char
- *
- buffer
- ,
-
- int
- length
- )
-
- =
-
- 0
- ;
-
- virtual
-
- ~
- Serializable
- (){}
- };
复制代码
????
????????????????????????????? Processor ????????????? ObjectProcessor???????? ObjectHandler ??????????????? Service ???????????? Request, Response ??????????????????
- // ObjectProcessor ??
- class
-
- ObjectProcessor
-
- :
-
- public
-
- ProcessorHelper
-
- {
- public
- :
-
- ObjectProcessor
- ();
-
- virtual
-
- ~
- ObjectProcessor
- ();
-
- // ??? Processor ?????
-
- virtual
-
- int
-
- Init
- (
- Server
- *
- server
- ,
-
- Config
- *
- config
- =
- NULL
- );
-
- // ??? Processor ?????
-
- virtual
-
- int
-
- Process
- (
- const
-
- Request
- &
- request
- ,
-
- const
-
- Peer
- &
- peer
- );
-
- virtual
-
- int
-
- Process
- (
- const
-
- Request
- &
- request
- ,
-
- const
-
- Peer
- &
- peer
- ,
-
- Server
- *
- server
- );
-
- ///@brief ????????????????????????????????
-
- inline
-
- void
- set_default_handler
- (
- ObjectHandler
- *
- default_handler
- )
-
- {
- default_handler_
- =
- default_handler
- ;
-
- }
-
- /**
- * @brief ?? service_name???????? handler ??? handler ????????????
- * @param service_name ??????? Request.service ??
- * @param handler ???????
- */
-
- void
-
- Register
- (
- const
- std
- ::
- string
- &
- service_name
- ,
-
- ObjectHandler
- *
- handler
- );
-
- /**
- * @brief ?? handler ??? GetName() ?????????
- * ?? handler->GetName() ?? "" ???????????????
- * @param handler ???????
- */
-
- void
-
- Register
- (
- ObjectHandler
- *
- handler
- );
-
- ///@brief ?????
-
- virtual
-
- int
-
- Close
- ();
- private
- :
- std
- ::
- map
- <
- std
- ::
- string
- ,
-
- ObjectHandler
- *>
- handler_table_
- ;
-
- Config
- *
- config_
- ;
-
- ObjectHandler
- *
- default_handler_
- ;
-
- int
-
- ProcessBy
- (
- const
-
- Request
- &
- request
- ,
-
- const
-
- Peer
- &
- peer
- ,
-
- ObjectHandler
- *
- handler
- ,
-
- Server
- *
- server
- =
- NULL
- );
-
- int
-
- DefaultProcess
- (
- const
-
- Request
- &
- request
- ,
-
- const
-
- Peer
- &
- peer
- ,
-
- Server
- *
- server
- =
- NULL
- );
-
- bool
-
- InitHandler
- (
- ObjectHandler
- *
- handler
- );
- };
- // ObjectHandler ??
- class
-
- ObjectHandler
-
- :
-
- public
-
- Serializable
- ,
-
- public
-
- Updateable
-
- {
- public
- :
-
- ObjectHandler
- ();
-
- virtual
-
- ~
- ObjectHandler
- ()
-
- ;
-
- virtual
-
- void
-
- ProcessRequest
- (
- const
-
- Peer
- &
- peer
- );
-
- virtual
-
- void
-
- ProcessRequest
- (
- const
-
- Peer
- &
- peer
- ,
-
- Server
- *
- server
- );
-
- /**
- * DenOS ??????????????????????
- * ????????????????????????????????????????????
- * @return ?????????? Request.service ??????
- */
-
- virtual
- std
- ::
- string
- GetName
- ()
-
- ;
-
- int
-
- Reply
- (
- const
-
- char
- *
- buffer
- ,
-
- int
- length
- ,
-
- const
-
- Peer
- &
- peer
- ,
-
- const
- std
- ::
- string
- &
- service_name
- =
-
- ""
- ,
-
- Server
- *
- server
- =
- NULL
- )
-
- ;
-
- int
-
- Inform
- (
- char
- *
- buffer
- ,
-
- int
- length
- ,
-
- const
- std
- ::
- string
- &
- session_id
- ,
-
- const
- std
- ::
- string
- &
- service_name
- ,
-
- Server
- *
- server
- =
- NULL
- );
-
- int
-
- Inform
- (
- char
- *
- buffer
- ,
-
- int
- length
- ,
-
- const
-
- Peer
- &
- peer
- ,
-
- const
- std
- ::
- string
- &
- service_name
- =
-
- ""
- ,
-
- Server
- *
- server
- =
- NULL
- );
-
- virtual
-
- int
-
- Init
- (
- Server
- *
- server
- ,
-
- Config
- *
- config
- );
-
- /**
- * ??????????????????????
- * ????? 0 ????????????
- */
-
- virtual
-
- int
-
- Update
- ()
-
- {
-
- return
-
- 0
- ;
-
- }
- protected
- :
-
- Server
- *
- server_
- ;
- std
- ::
- map
- <
- int
- ,
-
- MessageHeader
- >
- header_map_
- ;
-
- Response
- response_
- ;
-
- Notice
- notice_
- ;
- };
复制代码
?????????????????????Serializable??????????????????????????????????????????????????????????????????????????????????????????????????????C++???????????????Serializable???????????Pack()/Upack()????????????????????????ObjectHandlerCast???????????????????????????????????ProcessObject()?????????????????Serializable????????????????????????Serializable????????????????????????????????????????????????????????????????????????????????????????????
- // ObjectHandlerCast ????
- /**
- * ????????????????????????????????
- * ??????????????
- */
- template
- <
- typename
- REQ
- ,
-
- typename
- RES
- =
- REQ
- >
- class
-
- ObjectHandlerCast
-
- :
-
- public
-
- ObjectHandler
-
- {
- public
- :
-
- ObjectHandlerCast
- ()
-
- :
- req_obj_
- (
- NULL
- ),
- res_obj_
- (
- NULL
- ),
- buffer_
- (
- NULL
- )
-
- {
- buffer_
- =
-
- new
-
- char
- [
- Message
- ::
- MAX_MAESSAGE_LENGTH
- ];
- bzero
- (
- buffer_
- ,
-
- Message
- ::
- MAX_MAESSAGE_LENGTH
- );
-
- }
-
- virtual
-
- ~
- ObjectHandlerCast
- ()
-
- {
-
- delete
- []
- buffer_
- ;
-
- }
-
- /**
- * ?????? obj_ ????? Serializable ???????????
- */
-
- virtual
-
- int
-
- Pack
- (
- char
- *
- buffer
- ,
-
- int
- length
- ,
-
- const
- RES
- &
- object
- )
-
- const
-
- {
-
- return
-
- -
- 1
- ;
-
- }
-
- virtual
-
- int
-
- Unpack
- (
- const
-
- char
- *
- buffer
- ,
-
- int
- length
- ,
- REQ
- *
- object
- )
-
- {
-
- return
-
- -
- 1
- ;
-
- }
-
- int
-
- ReplyObject
- (
- const
- RES
- &
- object
- ,
-
- const
-
- Peer
- &
- peer
- ,
-
- const
- std
- ::
- string
- &
- service_name
- =
-
- ""
- )
-
- {
- res_obj_
- =
-
- &
- object
- ;
-
- int
- len
- =
-
- SerializeTo
- (
- buffer_
- ,
-
- Message
- ::
- MAX_MAESSAGE_LENGTH
- );
-
- if
-
- (
- len
- <
-
- 0
- )
-
- return
-
- -
- 1
- ;
-
- return
-
- Reply
- (
- buffer_
- ,
- len
- ,
- peer
- ,
- service_name
- );
-
- }
-
- int
-
- InformObject
- (
- const
- std
- ::
- string
- &
- session_id
- ,
-
- const
- RES
- &
- object
- ,
-
- const
- std
- ::
- string
- &
- service_name
- )
-
- {
- res_obj_
- =
-
- &
- object
- ;
-
- int
- len
- =
-
- SerializeTo
- (
- buffer_
- ,
-
- Message
- ::
- MAX_MAESSAGE_LENGTH
- );
-
- if
-
- (
- len
- <
-
- 0
- )
-
- return
-
- -
- 1
- ;
-
- return
-
- Inform
- (
- buffer_
- ,
- len
- ,
- session_id
- ,
- service_name
- );
-
- }
-
- virtual
-
- void
-
- ProcessRequest
- (
- const
-
- Peer
- &
- peer
- ,
-
- Server
- *
- server
- )
-
- {
- REQ
- *
- obj
- =
- req_obj_
- ;
-
- ProcessObject
- (*
- obj
- ,
- peer
- ,
- server
- );
-
- delete
- obj
- ;
- req_obj_
- =
- NULL
- ;
-
- }
-
- virtual
-
- void
-
- ProcessObject
- (
- const
- REQ
- &
- object
- ,
-
- const
-
- Peer
- &
- peer
- )
-
- {
- ERROR_LOG
- (
- "This object have no process handler."
- );
-
- }
-
- virtual
-
- void
-
- ProcessObject
- (
- const
- REQ
- &
- object
- ,
-
- const
-
- Peer
- &
- peer
- ,
-
- Server
- *
- server
- )
-
- {
-
- ProcessObject
- (
- object
- ,
- peer
- );
-
- }
- protected
- :
- REQ
- *
- req_obj_
- ;
-
- const
- RES
- *
- res_obj_
- ;
- private
- :
-
- char
- *
- buffer_
- ;
-
- virtual
-
- ssize_t
-
- SerializeTo
- (
- char
- *
- buffer
- ,
-
- int
- buffer_length
- )
-
- const
-
- {
-
- ssize_t
- ret
- =
-
- 0
- ;
- ret
- =
-
- Pack
- (
- buffer
- ,
- buffer_length
- ,
-
- *
- res_obj_
- );
-
- return
- ret
- ;
-
- }
-
- virtual
-
- int
-
- SerializeFrom
- (
- const
-
- char
- *
- buffer
- ,
-
- int
- length
- )
-
- {
- req_obj_
- =
-
- new
- REQ
- ();
-
- // ????????????????????
-
- int
- ret
- =
-
- Unpack
- (
- buffer
- ,
- length
- ,
- req_obj_
- );
-
- if
-
- (
- ret
- )
-
- {
-
- delete
- req_obj_
- ;
- req_obj_
- =
- NULL
- ;
-
- }
-
- return
- ret
- ;
-
- }
- };
复制代码
????????????????????????????????????Pack()?UnPack()??????????????????????????????????????????????GetName()???
??????????????C++????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????
????????????????????????????????????????????Map?????????Key-Value?????????????????????????Serializable????????????????????????????
- ??????????int??????????memcpy()???
- std::string??????????c_str()?????????
- JSON????????????json??????GITHUB??Tencent/RapidJson?
????
??????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????memcache????????????????IO??????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????CAP????????????????????
????
?????????????????????????????????Map???
- class
-
- DataMap
-
- :
-
- public
-
- Updateable
-
- {
- public
- :
-
- DataMap
- ();
-
- virtual
-
- ~
- DataMap
- ();
-
- /**
- * @brief ??????????????????????????
- */
-
- virtual
-
- int
-
- Update
- (){
-
- return
-
- 0
- ;
-
- }
-
- /**
- * @brief ?? key ??????
- * @param key ??? Key
- * @param value_buf ????????
- * @param value_buf_len ????????
- * @return ?? -1 ??????? key??? -2 ?? value_buf_len ?????????????????????? >= 0 ???? value ???
- */
-
- virtual
-
- int
-
- Get
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- char
- *
- value_buf
- ,
-
- int
- value_buf_len
- )
-
- =
-
- 0
- ;
-
- virtual
-
- int
-
- Get
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- Serializable
- *
- value
- );
-
- /**
- * @brief ?? Get ???
- * @param key ????? Key
- * @param callback ???????????? key ???? FetchData() ?? value_buf ?? NULL
- * @return ?? 0 ?????????????????
- */
-
- virtual
-
- int
-
- Get
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- DataMapCallback
- *
- callback
- )
-
- =
-
- 0
- ;
-
- /**
- * @brief ?????key????????
- * @return ????0? ?? -1 ??value???????????????
- */
-
- virtual
-
- int
-
- Put
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- const
-
- char
- *
- value_buf
- ,
-
- int
- value_buf_len
- )
-
- =
-
- 0
- ;
-
- virtual
-
- int
-
- Put
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- const
-
- Serializable
- &
- value
- );
-
- /**
- * ???????????? callback ???????
- * @param key ?? key
- * @param value ?? Value
- * @param callback ??????????? PutResult() ??
- * @return ?? 0 ????????
- */
-
- virtual
-
- int
-
- Put
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- const
-
- Serializable
- &
- value
- ,
-
- DataMapCallback
- *
- callback
- );
-
- virtual
-
- int
-
- Put
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- const
-
- char
- *
- value_buf
- ,
-
- int
- value_buf_len
- ,
-
- DataMapCallback
- *
- callback
- );
-
- /**
- * ?? key ?????
- * @return ?? 0 ????????? -1 ???? key ?????????????????????
- */
-
- virtual
-
- int
-
- Remove
- (
- const
- std
- ::
- string
- &
- key
- )
-
- =
-
- 0
- ;
-
- virtual
-
- int
-
- Remove
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- DataMapCallback
- *
- callback
- );
-
- /**
- * ??? Key ?????
- *@return ?? key ??????0 ?????
- */
-
- virtual
-
- int
-
- ContainsKey
- (
- const
- std
- ::
- string
- &
- key
- )
-
- =
-
- 0
- ;
-
- /**
- * ?? ContainsKey ????? key ???? FetchData() ?? value_buf ?? NULL?
- * ?? key ???value_buf ???NULL???????????????????????
- * ????????????????????????????????????????
- * ?????????????? value ???
- */
-
- virtual
-
- int
-
- ContainsKey
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- DataMapCallback
- *
- callback
- )
-
- =
-
- 0
- ;
-
- /**
- * ???????
- * @param callback ???????? callback ??? FetchData() ??
- * @return ?? 0 ????????????
- */
-
- virtual
-
- int
-
- GetAll
- (
- DataMapCallback
- *
- callback
- )
-
- =
-
- 0
- ;
-
- /**
- * ?????????
- * @param result ??????? map ??????????? Bytes ? buffer_ptr ?? delete[]
- * @return ?? 0 ???????????
- */
-
- virtual
-
- int
-
- GetAll
- (
- std
- ::
- map
- <
- std
- ::
- string
- ,
-
- Bytes
- >*
- result
- );
- private
- :
-
- char
- *
- tmp_buffer_
- ;
- };
复制代码
??????????std::map???????key???string???value?????buffer???????????????????????????????????????
??????????????????????????
???????????????
Redis
Memcached
ZooKeeper???????????????
???????????????????????????????????????????????????????????????????????????????Redis???????????????????????DataMap??????????????????????????????????????RamMap
?????
???????????????????????DataMap??????????????????????????????????????????????????????????????????????????????????????????????????????
???????????????????????????
???????????????????????????????????????Redis????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????Redis????????????????Redis?????????????????????????????????????????????????????????????????????????????????????????????????
????Key??????????????????????????????Key-Vaule??????????????????Key???????????????????Key??????????????????????????????
???????????????????????????????????????????????????????
????????????????????????????????????????ID????????????????????????????????ID????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????3???????????ID????ID????????????????????????????????????????????????????????????????????????????????????
?key???????????RamMap????????????????????????????????????????????????????????
?key????????????????????????????????????????????????????????????
???????????????????Key?????????????????????????????????????????????????????????????????????????????????????????????Key???????????????????????????????????????????????????????3??????????????????????????????????1???????????
??????????????
- /**
- * ??????????
- */
- enum
-
- CacheType
-
- {
-
- TypeLocal
- ,
-
- ///< ??
-
- TypeName
- ,
-
- ///< ? Cache ????
-
- TypeKey
- ,
-
- ///< ?? Cache ?????????? key ??
-
- TypeCopy
-
- ///< ?????
- };
- /**
- * @brief ???????????????
- */
- class
-
- Cache
-
- :
-
- public
-
- DataMap
-
- {
- public
- :
-
- /**
- * @brief ?????
- * @return ?????????
- */
-
- static
-
- bool
-
- EnsureCluster
- (
- Config
- *
- config
- =
- NULL
- );
-
- /**
- * ???? Cache ???
- * @attention ??????????????? type, local_data_map ????? Cache ??????????? name ?????????? Cache ???
- * @param name ???
- * @param type ??????????
- * @param local_data_map ???????????
- * @return ??? NULL ?????? Cache ??????
- */
-
- static
-
- Cache
- *
-
- GetCache
- (
- const
- std
- ::
- string
- &
- name
- ,
-
- CacheType
- type
- ,
-
- DataMap
- *
- local_data_map
- );
-
- /**
- * ???? Cache ???
- * @param name ???
- * @param local_data_map ???????????
- * @note ??????????????? type, class M ????? Cache ??????????? name ?????????? Cache ???
- * @return ??? NULL ?????? Cache ??????
- */
-
- template
- <
- class
- M
- >
-
- static
-
- Cache
- *
-
- GetCache
- (
- const
- std
- ::
- string
- &
- name
- ,
-
- CacheType
- type
- ,
-
- int
- *
- data_map_arg1
- =
- NULL
- )
-
- {
-
- DataMap
- *
- local_data_map
- =
- NULL
- ;
- std
- ::
- map
- <
- std
- ::
- string
- ,
-
- DataMap
- *>::
- iterator
- it
- =
- cache_store_
- .
- find
- (
- name
- );
-
- if
-
- (
- it
- !=
- cache_store_
- .
- end
- ())
-
- {
- local_data_map
- =
- it
- ->
- second
- ;
-
- }
-
- else
-
- {
-
- if
-
- (
- data_map_arg1
- !=
- NULL
- )
-
- {
- local_data_map
- =
-
- new
- M
- (*
- data_map_arg1
- );
-
- }
-
- else
-
- {
- local_data_map
- =
-
- new
- M
- ();
-
- }
- cache_store_
- [
- name
- ]
-
- =
- local_data_map
- ;
-
- }
-
- return
-
- GetCache
- (
- name
- ,
- type
- ,
- local_data_map
- );
-
- }
-
- /**
- * ?????????? Cache
- */
-
- static
-
- void
-
- RemoveCache
- (
- const
- std
- ::
- string
- &
- name
- );
-
- explicit
-
- Cache
- (
- const
- std
- ::
- string
- &
- name
- );
-
- virtual
-
- ~
- Cache
- ();
-
- virtual
- std
- ::
- string
- GetName
- ()
-
- const
- ;
- protected
- :
-
- static
- std
- ::
- map
- <
- std
- ::
- string
- ,
-
- Cache
- *>
- cache_map_
- ;
- std
- ::
- string name_
- ;
- private
- :
-
- static
-
- int
- MAX_CACHE_NUM
- ;
-
- static
- std
- ::
- map
- <
- std
- ::
- string
- ,
-
- DataMap
- *>
- cache_store_
- ;
- };
复制代码
???
????????????????MySQL???SQL????????????????????SQL??????????????????DAL????????????????????????????????????????????????SQL????????????????????NoSQL???????????????????????????????SQL????????????????????????????????????PlayStation????????????
????????????????????
???????
??????????
?????????Key-Value????????????????????????????????????????????????????key-value?????????
- /**
- * @brief ??????????????????????????????????????
- */
- class
-
- DataStoreCallback
-
- {
- public
- :
-
- static
-
- int
- MAX_HANG_UP_CALLBACK_NUM
- ;
-
- // ???????
- std
- ::
- string key
- ;
-
- Serializable
- *
- value
- ;
-
- DataStoreCallback
- ();
-
- virtual
-
- ~
- DataStoreCallback
- ();
-
- /**
- * ? Init() ???????????
- * @param result ????????0 ????????
- * @param msg ????????????????????? ""?
- */
-
- virtual
-
- void
-
- OnInit
- (
- int
- result
- ,
-
- const
- std
- ::
- string
- &
- msg
- );
-
- /**
- * ??? Get() ????????
- * @param key
- * @param value
- * @param result ? 0 ?????????? value ??????????????
- */
-
- virtual
-
- void
-
- OnGot
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- Serializable
- *
- value
- ,
-
- int
- result
- );
-
- /**
- * ??? Put() ?????????
- * @param key
- * @param result ?? result ? 0 ???????????????
- */
-
- virtual
-
- void
-
- OnPut
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- int
- result
- );
-
- /**
- * ??? Remove() ????????
- * @param key
- * @param result ?? 0 ?????????????????? key ??????????
- */
-
- virtual
-
- void
-
- OnRemove
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- int
- result
- );
-
- /**
- * ???????????????????????????????????????
- * ? PrepareRegisterCallback() ????????????????????????
- * @param privdata ????????????????????? NULL ??? NULL?
- * @param init_cb ?????????????
- * @return ????????????? NULL ???? privdata ? NULL
- */
-
- static
-
- DataStoreCallback
- *
-
- PrepareUseCallback
- (
- void
- *
- privdata
- ,
-
- DataStoreCallback
- *
- init_cb
- );
-
- /**
- * ?????????????????
- * @param callback ???NULL????????????key?????callback???
- * @return ????callback?????? NULL ???????????????
- */
-
- static
-
- DataStoreCallback
- *
-
- PrepareRegisterCallback
- (
-
- DataStoreCallback
- *
- callback
- );
- protected
- :
-
- static
-
- int
- kHandupCallbacks
- ;
-
- /// ??????????????????????
- };
- /**
- *@brief ????????????????????
- */
- class
-
- DataStore
-
- :
-
- public
-
- Component
-
- {
- public
- :
-
- DataStore
- (
- DataStoreCallback
- *
- callback
- =
- NULL
- )
-
- :
- callback_
- (
- callback
- )
-
- {
-
- // Do nothing
-
- }
-
- virtual
-
- ~
- DataStore
- ()
-
- {
-
- // Do nothing
-
- }
-
- /**
- * ?????????????????????????????
- * @param config ????
- * @param callback ?? callback ?????????????????? OnInit() ???????
- * @return ???????????? 0 ?????
- */
-
- virtual
-
- int
-
- Init
- (
- Config
- *
- config
- ,
-
- DataStoreCallback
- *
- callback
- );
-
- virtual
-
- int
-
- Init
- (
- Application
- *
- app
- ,
-
- Config
- *
- cfg
- ){
- app_
- =
- app
- ;
-
- return
-
- Init
- (
- cfg
- ,
- callback_
- );
-
- }
-
- virtual
- std
- ::
- string
- GetName
- ()
-
- {
-
- return
-
- "den::DataStore"
- ;
-
- }
-
- virtual
-
- int
-
- Stop
- ()
-
- {
-
- Close
- ();
-
- return
-
- 0
- ;
-
-
- }
-
- /**
- * ??????????????????
- * @return ?? 0 ???????????????????????? sleep ???
- */
-
- virtual
-
- int
-
- Update
- ()
-
- =
-
- 0
- ;
-
- /**
- * ???????????????????????????????
- */
-
- virtual
-
- void
-
- Close
- ()
-
- =
-
- 0
- ;
-
- /**
- * ??????????? key ??????? value???????? callback?
- * ????????? callback ? value ??????????
- * @param key
- * @param callback ??NULL?????? Init() ???? callback ???
- * @return 0 ???????????????
- */
-
- virtual
-
- int
-
- Get
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- DataStoreCallback
- *
- callback
- =
- NULL
- )
-
- =
-
- 0
- ;
-
- /**
- * ??????????? key ?value?????????? callback?
- * @param key
- * @param value
- * @param callback ??? NULL?????? Init() ???? callback ???
- * @return ???????????????
- */
-
- virtual
-
- int
-
- Put
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- const
-
- Serializable
- &
- value
- ,
-
- DataStoreCallback
- *
- callback
- =
- NULL
- )
-
- =
-
- 0
- ;
-
- /**
- * ??????????? key ???????? callback?
- * @param key
- * @param callback ??? NULL?????? Init() ???? callback ???
- * @return ???????????????
- */
-
- virtual
-
- int
-
- Remove
- (
- const
- std
- ::
- string
- &
- key
- ,
-
- DataStoreCallback
- *
- callback
- =
- NULL
- )
-
- =
-
- 0
- ;
- protected
- :
-
- /// ????????????
-
- DataStoreCallback
- *
- callback_
- ;
- };
复制代码
?????DataStore????????????????
????
Redis
????????
???????????????????????????????????????????????????
?????????????????????????????????????????????????????Key-Value????????SQL??Redis??NOSQL???????????????????????????????????????????Key-Value NoSQL?????????NOSQL???????????Key??????????????????????????????????????????????????????????????????????????
?????
????https://mp.weixin.qq.com/s/AW3o5VrtE_o5CoBWavWVmQ |
|