#key #key-value #data-store #lock-free #command #little #brokerless

app zedis

一个小型无代理持久化无锁数据存储。7个命令,非常简单

2 个版本

0.1.102 2019年9月25日
0.1.101 2019年9月24日

#2485数据库接口

Apache-2.0

8MB
460

ZEDIS

Logo

基于 zeromqseld 的轻量级 Redis 替代品。<90 LOC,专注于可移植的跨语言简单存储系统。无需运行完整服务。

安装

这将始终为您电脑获取并构建最新的 zedis 版本。如果您没有 cargo,请访问 https://www.rust-lang.net.cn/tools/install

cargo install zedis
Logo

不再支持 apthomebrew,更新位置太多。

运行 👍

zedis
#	   _______ ___ ___ ___ 
#	  |_  / __|   \_ _/ __|
#	   / /| _|| |) | |\__ \ 
#	  /___|___|___/___|___/ 
#

ZEDIS 有其特定的观点和限制。使用 ZEDIS,您只能读取和写入键值对。所有写入都会覆盖过去的值。

真正的快速读取 < 250µs,对于 ~2 MB json 有效负载。

相当快速的写入 < 18ms,对于 ~2 MB json 有效负载。

设置端口

现在您可以为 zedis 可用的端口/套接字设置。如果没有指定端口,zedis 将回退到 5555

zedis 6677

与 CLI 应用交互

获取 zedis CLI Logo

命令

获取值

GET key

返回键的字符串值。如果键不存在,则返回 b'Error occurred: InvalidKey'

设置值

SET key value

插入键值。如果键已存在,则值将被覆盖。

删除值

DEL key

从 zedis 中删除键及其值。这将返回键的最后一个已知值。

显示键

KEYS

此函数返回所有键的JSON格式列表。这效率低下,它会遍历整个数据库并将键名拼接在一起。如果想要立即得到结果,且键的数量超过1000个,请不要使用此功能。

查询

PRE keyprefix

返回具有该前缀的所有键。例如,“A”将返回“Alpha”、“Awesome”... 这是区分大小写的。

Python3客户端示例

import zmq
import json

port = "5555"

context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:%s" % port)

socket.send_string("SET david richard blyn holtz");socket.recv()
# 'done.'

socket._string("GET david");socket.recv()
# 'richard blyn holtz'

jsonblob = json.dumps({"example": "you can store seralized JSON"})
socket.send_string("SET js "+jsonblob);socket.recv()
# 'done.'

socket.send_string("GET js")
json.loads(socket.recv())
# {u'exmple': u'lorem ipsum...'}

socket.send_string("DEL js");socket.recv();socket.recv()
# b'2 yo yo'

## ADDING A BUNCH OF KEYS
for x in range(0, 100):
    socket.send_string("SET "+str(x)+" "+str(x)+" yo yo")
    socket.recv()

socket.send_string("PRE 1");socket.recv()
# b'["1", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"]'


socket.send_string("KEYS");socket.recv()
# b'["0", "1", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22"]'

检查是否存活

nc -v -z -w 5 localhost 5555
# found 0 associations
# found 1 connections:
#      1:	flags=82<CONNECTED,PREFERRED>
# 	outif lo0
# 	src 127.0.0.1 port 52227
# 	dst 127.0.0.1 port 5555
# 	rank info not available
# 	TCP aux info available

# Connection to localhost port 5555 [tcp/personal-agent] succeeded!

🦀 01010 开发者相关内容

构建

克隆、构建并添加符号链接,以便在命令行中访问 zedis

git clone https://github.com/drbh/zedis.git && cd zedis
cargo build --release && sh install.sh 

打包

fpm -f -s dir -t deb -n zedis target/release/zedis=/usr/local/

依赖项

~53MB
~724K SLoC