3 个版本
0.1.2 | 2022年5月14日 |
---|---|
0.1.1 | 2022年5月14日 |
0.1.0 | 2022年5月14日 |
#1405 在 数据库接口
用于 redizone
33KB
601 行
适用于 Rust 的 Redis 兼容服务器框架
特性
- 在 Rust 中创建一个快速的 Redis 兼容服务器
- 简单的 API。
- 支持管道和 telnet 命令。
- 与 Redis 客户端(如 redis-rs,redigo,redis-py,node_redis 和 jedis)一起工作
- 多线程
此库还适用于 Go。
示例
以下是一个完整的 示例,它接受 Redis 副本,支持以下命令:
- SET key value
- GET key
- DEL key
- PING
- QUIT
use std::collections::HashMap;
use std::sync::Mutex;
fn main() {
let db: Mutex<HashMap<Vec<u8>, Vec<u8>>> = Mutex::new(HashMap::new());
let mut s = redcon::listen("127.0.0.1:6380", db).unwrap();
s.command = Some(|conn, db, args|{
let name = String::from_utf8_lossy(&args[0]).to_lowercase();
match name.as_str() {
"ping" => conn.write_string("PONG"),
"set" => {
if args.len() < 3 {
conn.write_error("ERR wrong number of arguments");
return;
}
let mut db = db.lock().unwrap();
db.insert(args[1].to_owned(), args[2].to_owned());
conn.write_string("OK");
}
"get" => {
if args.len() < 2 {
conn.write_error("ERR wrong number of arguments");
return;
}
let db = db.lock().unwrap();
match db.get(&args[1]) {
Some(val) => conn.write_bulk(val),
None => conn.write_null(),
}
}
_ => conn.write_error("ERR unknown command"),
}
});
println!("Serving at {}", s.local_addr());
s.serve().unwrap();
}