吉法师的博客

不知道能否追到喜欢的人呀,今年努力下吧~ 2022.1.4

用Node.js实现一个Redis

项目背景

利用Nodejs来实现一个Node存储服务(Node Dictionary Server)

源码

码云链接

用到的编程语言和环境

操作系统:Windows10/MacOS

语言:JavaScript

框架:Node

API文档

命令字格式(Json)

命令字格式大小写任意,如ping,PING,Ping。

1.检查版本

type:"ping"
password:"password"
return
type:"ping"
result:"version"

2.检查权限

type:"check"
password:"password"
return
type:"check"
result:"code"
remark:"remark"

3.存入缓存

type:"add"
key:"key"       
value:"value"
password:"password"
return
type:"add"
result:"code"
remark:"success"

4.获取元素

type:"get"
key:"key"
password:"password"
return 
type:"get"
value:"json"
result:"code"
remark:"remark"

5.寻找元素是否存在

type:"find"
key:"key"
password:"password"
return
type:"find"
value:"code"
remark:"remark"

6.获得所有的Nodis缓存内容

type:"getAll"
password:"password"
remark:"remark"
return
type:"getAll"
result:"code"
value:"value"

7.增加某个key的值

type:"raise"
password:"password"
key:"key"
value:"value"
return
type:"raise"
result:"code"
remark:"remark"

8.减少某个key的值

type:"reduce"
password:"password"
key:"key"
value:"value"
return
type:"reduce"
result:"code"
remark:"remark"

9.开启一段事务

type:"trans"
password:"password"
value:"[{type:reduce,key:a,value:b},{type:getall},etc]"
return 
type:"trans"
result:"code"
remark:"success" or "xxx command error" or "other"

10.删除某个缓存的内容

type:"delete"
password:"password"
key:"key"
return
type:"delete"
result:"code"
remark:"remark"

11.更新某个key的值

type:"update"
password:"password"
key:"key"
value:"value"
return
type:"update"
result:"code"
remark:"remark"

12.上锁

type:"setlock"
password:"password"
key:"key"
return 
type:"setlock"
result:"code"
remark:"remark"

13.释放锁

type:"getlock"
password:"password"
key:"key"
return
type:"getlock"
result:"code"
remark:"remark""

14.清空锁

type:"clearlock"
password:"password"
return
type:"clearlock"
result:"code"
remark:"remark"

Nodis支持动态配置文件,配置文件示例:

[main]
#Nodis的IP 端口
ip=127.0.0.1
port=13000

[mysql]
#暂时没用
ip=127.0.0.1
name=root
password=123456
dbname=Nodis


[Nodis]
#Nodis的版本号 ping的时候会返回
version=V0.0.1
#用户密码的MD5
password=E10ADC3949BA59ABBE56E057F20F883E
#是否需要密码
usePassword=true

#AESKey=9cd5b4cf899492077b4a125a79af8e76
#AESiv=e6db271db12d4d47


[solid]
#是否固化
isSolid=true
#固化间隔(秒)
setTime=200
#固化的文件路径
logPathMac=/Users/hideyoshi/Desktop/codes/Nodis/
logPathWin=E:/gitee/Nodis/
logPathDef=./

#固化的文件名
logName=solid.json
logNameTemp=solid.json.temp

#useEncrypt=true

[lock]
#在无法得到锁的时候尝试多少次
trys=10
#每次尝试的时间间隔
ms=300
#是否启用锁
uselock=true

Share