天天看點

Rust實作的Redis記憶體資料庫釋出,性能炸裂!

Rust實作的Redis記憶體資料庫釋出,性能炸裂!

概述

Rudis 是一個高性能記憶體資料庫。Rudis 是采用 Rust 語言開發的項目,旨在利用 Rust 語言的優勢來重新實作 Redis 的核心功能,以滿足使用者對高性能、可靠性和安全性的需求,同時保持與 Redis API 的相容。

快速入門

  • 啟動畫面
/\_____/\
    /  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           
  • 本地調試
// 普通啟動
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 指令

127.0.0.1:6379> echo helloword
helloword           

ping 指令

127.0.0.1:6379> ping
PONG           

set 指令

127.0.0.1:6379> set user bailiang
OK           

set 指令 [過期]

127.0.0.1:6379> set user bailiang px 10000
OK
127.0.0.1:6379> set user bailiang ex 10
OK           

get 指令

127.0.0.1:6379> get user
bailiang           

del 指令

127.0.0.1:6379> del username
(integer) 1
127.0.0.1:6379> del username password
(integer) 2           

exists 指令

127.0.0.1:6379> exists user
(integer) 0           

keys 指令

127.0.0.1:6379> keys *
(empty list or set)           

auth 指令

127.0.0.1:6379> auth 123456
OK           

expire 指令

127.0.0.1:6379> expire user 10000
(integer) 0           

select 指令

127.0.0.1:6379> select 1
OK           

dbsize 指令

127.0.0.1:6379> dbsize
(integer) 2           

flushdb 指令

127.0.0.1:6379> flushdb
OK           

flushall 指令

127.0.0.1:6379> flushall
OK           

append 指令

127.0.0.1:6379> append user bailiang
(integer) 10           

move 指令

127.0.0.1:6379> move user 0
OK           

rename 指令

127.0.0.1:6379> rename username new_username
OK           

rpush 指令

127.0.0.1:6379> rpush key value1 value2
OK           

lpush 指令

127.0.0.1:6379> lpush key value3 value4
OK           

llen 指令

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

繼續閱讀