+ while let Some(frame) = connection.read_frame().await.unwrap() {
+ let response = match Command::from_frame(frame).unwrap() {
+ Set(cmd) => {
+ // The value is stored as `Vec<u8>`
+ db.lock().unwrap().insert(cmd.key().to_string(), cmd.value().clone());
+ Frame::Simple("OK".to_string())
+ }
+ Get(cmd) => {
+ if let Some(value) = db.lock().unwrap().get(cmd.key()) {
+ Frame::Bulk(value.clone())
+ } else {
+ Frame::Null
+ }
+ }
+ cmd => panic!("unimplemented {:?}", cmd),
+ };