# Lighter 轻量级对象缓存服务中间件 [![License](./license.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)
(目前主分支是 rebuild,如果在代码设计和风格统一上存在问题,请在评论区留言)
**此项目已经废弃,请转移到 Go 重构的版本 kafo -- [码云](https://gitee.com/avino-plan/kafo) / [Github](https://github.com/avino-plan/kafo)**
**目前正在使用 Go 语言进行重构!!!不仅会加入持久化功能,还会改造为真正的分布式缓存中间件。。。**
**master 和 rebuild 分支是使用 Java 开发的单机版本,而 develop 分支则是目前正在改造的分布式版本。**
+ 使用 HTTP 请求作为网络协议,跨平台跨语言
+ 可以直接与客户端相连,也可以在后端作为第一层缓存中间件存在
+ 支持自定义的节点实现,默认带有一个节点实现
+ 默认节点具备懒回收和哨兵回收两种过期回收机制
### 1. 使用用途:
1) 主要用作于对象缓存,带有默认的缓存实现,并且允许多个节点的缓存,这也实现了负载均衡和分布式缓存。
2) 使用 `Tuz` 做容器托管(`Tuz` 是我写的另外一个开源项目:[Tuz 资源容器](https://gitee.com/FishGoddess/Tuz),已发布到 [maven 中心仓库](https://mvnrepository.com/artifact/cn.com.fishin/Tuz)),并利用它的 IOC 技术和拦截器技术做业务解耦。
3) 在网络通信方面使用的是 `Netty`,并且实现了 `HTTP` 下的传输协议。
4) 整个项目的所有组件都允许自定义,包括缓存实现、节点选择、协议解析和网络通信协议,你只需要非常简单的实现一个接口即可。
+ #### 留言网站:[https://www.fishin.com.cn](https://www.fishin.com.cn)
+ #### 联系方式:fishgoddess@qq.com
+ #### 开源协议:[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.html)
### 2. 使用步骤:
详细请参考 [HowToUse.md](./HowToUse.md) 文件
1. 首先下载 Lighter 的压缩包
+ 压缩包下载地址:
+ [码云地址](https://gitee.com/FishGoddess/Lighter/releases)
+ [GitHub](https://github.com/FishGoddess/Lighter/releases)
2. 当你下载好压缩包之后,就成功了一大半啦!
+ 在 Linux 系统上如何启动 Lighter 服务?
a. 使用 `ls` 命令查看下载好的文件
![linux_tar_gz_1.png](./images/HowToUse/linux_tar_gz_1.png)
b. 使用 `tar` 命令解压文件
![linux_tar_gz_2.png](./images/HowToUse/linux_tar_gz_2.png)
c. 解压之后得到一个目录,使用 `cd` 命令进入目录,进去之后可以看到三个目录
+ 首先来看 `bin` 目录,这是二进制文件所在的目录,运行服务和关闭服务的脚本都在这个目录下
+ 让我们来启动服务吧!!
+ 执行 `./startup.sh` 即可启动,当然,我们建议你使用后台启动方式,如图中:
![linux_chmod.png](./images/HowToUse/linux_startup_1.png)
+ 你或许会担心以后台形式启动会看不到日志,不用担心,后面会提到日志在哪
+ 如果你足够幸运,就可以看到下面这个 Lighter 图标:
![linux_startup_2.png](./images/HowToUse/linux_startup_2.png)
+ 到这里,服务就完全启动啦!!
+ 注意:由于运行需要权限,如果你发现运行时显示`没有权限`,就先使用 `chmod` 赋予权限
![linux_chmod.png](./images/HowToUse/linux_chmod.png)
+ 如果你需要关闭服务,当然,我们不建议你这么做哈哈,但如果你坚持要这么做,可以执行 `shutdown.sh` 脚本
![linux_shutdown_1.png](./images/HowToUse/linux_shutdown_1.png)
![linux_shutdown_2.png](./images/HowToUse/linux_shutdown_2.png)
+ 在 Windows 系统上如何启动 Lighter 服务?
a. 同样需要下载到 Lighter 的压缩包,这里就不赘述了,解压到一个目录下
b. 进入到这个目录,同样有三个目录,进入到 `bin` 目录下,双击 `startup.bat` 即可启动
c. 如果需要关闭服务,双击 `shutdown.bat` 即可
3. 服务运行中,日志在哪?
在得到的目录中,有三个目录,`bin` / `conf` / `logs`
我想聪明的你已经猜到了,日志就是存放在 `logs` 目录,它以时间进行分割日志文件,一天一个日志文件
![direction.png](./images/HowToUse/direction.png)
如果你需要配置服务,进入 `conf` 目录,打开 `config.properties` 文件进行配置即可
如果你需要配置日志信息,进入 `bin` / `classes` 目录,打开 `logback.xml` 文件进行配置即可
### 请求例子:
下面这个协议完整版请点击:[Lighter 使用的 Http 协议](./protocol/HttpProtocol.md)。
这个协议目前实现的是 HTTP 请求,建议使用 Restful 的风格发送请求:
1. get 动作,获取一个对象:
+ 例子:http://127.0.0.1:9669/get/testKey
+ testKey 为对象的 key 值
+ **建议使用 `GET 请求`**
+ 注意:返回值是一个 json 对象数组
2. set 动作,保存一个对象:
+ 例子:http://127.0.0.1:9669/set/testKey
+ testKey 为对象的 key 值
+ **建议使用 `POST 请求`**
+ **建议使用 Content-Type: application/json;charset=utf-8**
+ 注意:返回值是一个 json 对象数组
请求体:
```json
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
}
```
或者是:
```text
任意字符串
```
3. setAbsent 动作,如果对象键值不存在才保存:
+ 例子:http://127.0.0.1:9669/setAbsent/testKey
+ testKey 为对象的 key 值
+ 如果 key 值不存在才保存
+ **建议使用 `POST 请求`**
+ **建议使用 Content-Type: application/json;charset=utf-8**
+ 注意:返回值是一个 json 对象数组
请求体:
```json
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": "value4"
}
```
或者是:
```text
任意字符串
```
4. remove 动作,删除一个对象:
+ 例子:http://127.0.0.1:9669/remove/testKey
+ testKey 为对象的 key 值
+ **建议使用 `DELETE 请求`**
+ 返回删除的这个对象
5. exists 动作,判断一个对象 key 是否存在:
+ 例子:http://127.0.0.1:9669/exists/testKey
+ testKey 为对象的 key 值
+ **建议使用 `GET 请求`**
+ 返回 true 如果这个 key 存在
6. expiredTime 动作,判断一个对象 key 的存活时间:
+ 例子:http://127.0.0.1:9669/expiredTime/testKey
+ testKey 为对象的 key 值
+ **建议使用 `GET 请求`**
+ 返回值的意义:
+ -2:这个 key 值不存在或者已经过期
+ -1:这个 key 永不过期
+ 正数:这个 key 的存活时间,大于 0 的一个数,等这个值变成 0,就意味着这个值已经过期
7. lighter 动作,获取 Lighter 服务运行的信息
+ 例子:http://127.0.0.1:9669/lighter/info
+ 目前支持 keys、values、numberOfKeys、info 等动作
+ info 为系统运行所有信息,包含上面几个系统动作的功能
+ **建议使用 `GET 请求`**
+ 返回系统运行信息
```json
{
"code": 0,
"data": [
{
"keys": {
"node_15": [],
"node_14": [],
"node_0": [],
"node_1": [],
"node_2": [
没有合适的资源?快使用搜索试试~ 我知道了~
快速入门:Redis基本命令及用法简介
共67个文件
java:34个
png:12个
txt:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 169 浏览量
2024-06-07
18:59:17
上传
评论
收藏 481KB ZIP 举报
温馨提示
redis基本命令 一、关系数据库与非关系数据库 1.1. 关系型数据库 关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。 SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。 主流的关系型数据库包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2 等。 优点: 1.易于维护:都是使用表结构,格式一致 2. 使用方便:SQL语言通用,可用于复杂查询 3.支持复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询 缺点: 1. 读写性能比较差,尤其是海量数据的高效率读写 2. 固定的表结构,灵活度稍欠 3. 对于高并发读写的需求,传统关系型数据库节点的硬盘I/O是一个很大的瓶颈 1.2 非关系型数据库 NoSQL(NoSQL = Not Only SQL ),意思是“不仅仅是 SQL”,是非关系型数据库的总称。 除了主流的关系型数据库外的数据库,都认为是非关系型。 主流的 NoSQL 数据库有 Redis、MongBD、Hbase、Cou
资源推荐
资源详情
资源评论
收起资源包目录
Lighter 是一个轻量级的对象缓存服务中间件.zip (67个子文件)
新建文本文档.txt 4KB
Lighter-master
protocol
HttpProtocol.md 6KB
pom.xml 5KB
LICENSE.txt 11KB
license.svg 1KB
src
test
resources
http
rest-client.env.json 187B
HttpRequestParserTest.http 1KB
Lighter_Symbol.txt 510B
html
WebSocketNioServerTest.html 3KB
HttpNioServerTest.html 645B
java
net
NioServerTest.java 1KB
main
resources
logback.xml 2KB
binary
startup.sh 1KB
startup.bat 1KB
shutdown.sh 1KB
shutdown.bat 1KB
conf
config.properties 7KB
java
cn
com
fishin
lighter
Shutdown.java 823B
protocol
RequestHandler.java 332B
http
HttpRequestParser.java 4KB
RequestParser.java 348B
Startup.java 3KB
net
http
HttpServerInitializer.java 911B
HttpServerHandler.java 3KB
NioServer.java 3KB
core
executor
TaskAction.java 4KB
TaskExecutor.java 703B
DefaultRejectedExecutionHandler.java 878B
LighterParser.java 744B
LighterArgument.java 654B
LighterNodeManager.java 4KB
LighterExecutor.java 1KB
selector
NodeSelector.java 404B
BalancedNodeSelector.java 941B
KeyHashNodeSelector.java 700B
node
Node.java 775B
DefaultNode.java 11KB
common
helper
TuzHelper.java 814B
HttpRequestHelper.java 1KB
HashHelper.java 746B
GracefulHelper.java 645B
ResponseHelper.java 2KB
LogHelper.java 2KB
enums
ServerState.java 292B
state
NetServerState.java 661B
entity
ServerResponse.java 1KB
Task.java 2KB
exception
RequestException.java 406B
ExecuteException.java 405B
ActionException.java 409B
HowToUse.md 3KB
Lighter 未来版本迭代计划.txt 4KB
.gitignore 765B
images
Lighter.jmx 41KB
pc.png 9KB
ThirdTest_60s.png 104KB
HowToUse
linux_chmod.png 18KB
direction.png 17KB
linux_startup_1.png 11KB
linux_shutdown_1.png 6KB
linux_tar_gz_2.png 13KB
linux_startup_2.png 65KB
linux_shutdown_2.png 15KB
linux_tar_gz_1.png 4KB
SecondTest.png 96KB
FourthTest_60s_mixed_request.png 127KB
README.md 19KB
共 67 条
- 1
资源评论
野生的狒狒
- 粉丝: 3393
- 资源: 2436
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- apache-maven-3.6.1-bin.zip
- c593f5fc-d4a7-4b43-8ab2-51afc90f3f62
- IIR滤波器参数计算函数
- WPF树菜单拖拽功能,下级目录拖到上级目录,上级目录拖到下级目录.zip
- CDH6.3.2版本hive2.1.1修复HIVE-14706后的jar包
- 鸿蒙项目实战-天气项目(当前城市天气、温度、湿度,24h天气,未来七天天气预报,生活指数,城市选择等)
- Linux环境下oracle数据库服务器配置中文最新版本
- Linux操作系统中Oracle11g数据库安装步骤详细图解中文最新版本
- SMA中心接触件插合力量(插入力及分离力)仿真
- 变色龙记事本,有NPP功能,JSONview功能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功