3 个版本

0.1.2 2022年5月14日
0.1.1 2022年5月14日
0.1.0 2022年5月14日

#1405数据库接口


用于 redizone

MIT 许可证

33KB
601

REDCON

适用于 Rust 的 Redis 兼容服务器框架

特性

  • 在 Rust 中创建一个快速的 Redis 兼容服务器
  • 简单的 API。
  • 支持管道和 telnet 命令。
  • 与 Redis 客户端(如 redis-rsredigoredis-pynode_redisjedis)一起工作
  • 多线程

此库还适用于 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();
}

无运行时依赖项