Rust实现的Redis内存数据库发布,性能炸裂!

2024-07-16 14:52:26 浏览数 (2)

概述

Rudis 是一个高性能内存数据库。Rudis 是采用 Rust 语言开发的项目,旨在利用 Rust 语言的优势来重新实现 Redis 的核心功能,以满足用户对高性能、可靠性和安全性的需求,同时保持与 Redis API 的兼容。

快速入门

  • 启动画面
代码语言:javascript复制
     /_____/
    /  o   o            Rudis 0.0.1
   ( ==  ^  == )
    )         (          Bind: 127.0.0.1:6379
   (           )
  ( (  )   (  ) )        
 (__(__)___(__)__)
    
[2024-04-30T02:00:55Z INFO  rudis_server] Start loading appendfile
[=======================================] percent: 100% lines: 6/6 
[2024-04-30T02:00:55Z INFO  rudis_server] Server initialized
[2024-04-30T02:00:55Z INFO  rudis_server] Ready to accept connections
  • 本地调试
代码语言:javascript复制
// 普通启动
cargo run

// 带参启动
cargo run -- --port 8848

// 指定配置
cargo run -- rudis.properties

// 构建程序
cargo build

cargo build --release 

cargo build --release --target=x86_64-unknown-linux-musl

启动参数

  • port 端口, 默认: 6379
  • save RDB 保存策略, 默认:None
  • password 密码, 默认:None
  • databases 数据库数量, 默认:16
  • appendfilename 持久化日志路径,默认:None
  • appendonly 开启持久化,默认:false
  • dbfilename 数据文件名,默认:dump.rdb
  • maxclients 会话上限,默认 1000
  • hz 定时任务的频率,默认 10(次/秒)
  • dir 数据持久化目录,默认 "./"
  • bind 绑定的主机地址

操作命令

echo 命令

代码语言:javascript复制
127.0.0.1:6379> echo helloword
helloword

ping 命令

代码语言:javascript复制
127.0.0.1:6379> ping
PONG

set 命令

代码语言:javascript复制
127.0.0.1:6379> set user bailiang
OK

set 命令 [过期]

代码语言:javascript复制
127.0.0.1:6379> set user bailiang px 10000
OK
127.0.0.1:6379> set user bailiang ex 10
OK

get 命令

代码语言:javascript复制
127.0.0.1:6379> get user
bailiang

del 命令

代码语言:javascript复制
127.0.0.1:6379> del username
(integer) 1
127.0.0.1:6379> del username password
(integer) 2

exists 命令

代码语言:javascript复制
127.0.0.1:6379> exists user
(integer) 0

keys 命令

代码语言:javascript复制
127.0.0.1:6379> keys *
(empty list or set)

auth 命令

代码语言:javascript复制
127.0.0.1:6379> auth 123456
OK

expire 命令

代码语言:javascript复制
127.0.0.1:6379> expire user 10000
(integer) 0

select 命令

代码语言:javascript复制
127.0.0.1:6379> select 1
OK

dbsize 命令

代码语言:javascript复制
127.0.0.1:6379> dbsize
(integer) 2

flushdb 命令

代码语言:javascript复制
127.0.0.1:6379> flushdb
OK

flushall 命令

代码语言:javascript复制
127.0.0.1:6379> flushall
OK

append 命令

代码语言:javascript复制
127.0.0.1:6379> append user bailiang
(integer) 10

move 命令

代码语言:javascript复制
127.0.0.1:6379> move user 0
OK

rename 命令

代码语言:javascript复制
127.0.0.1:6379> rename username new_username
OK

rpush 命令

代码语言:javascript复制
127.0.0.1:6379> rpush key value1 value2
OK

lpush 命令

代码语言:javascript复制
127.0.0.1:6379> lpush key value3 value4
OK

llen 命令

代码语言:javascript复制
127.0.0.1:6379> llen key
(integer) 4

命令列表

Command

Supprt

Appendfile

Test case

Document

set

get

del

echo

flushdb

flushall

dbsize

auth

select

llen

exists

expire

rename

move

lpush

rpush

append

incr

decr

lindex

lpop

rpop

lrange

ttl

pttl

type

sadd

smembers

scard

hmset

hget

hdel

hexists

hset

keys

zadd

zscore

zcard

zcount

pexpire

mset

性能测试

  • percent: 100% lines: 100000/100000 time: 00:00:04
  • percent: 100% lines: 200000/200000 time: 00:00:09
  • percent: 100% lines: 400000/400000 time: 00:00:19

0 人点赞