Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Zio Redis
提交
08b69e8d
Z
Zio Redis
项目概览
梦境迷离
/
Zio Redis
9 个月 前同步成功
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
Zio Redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
08b69e8d
编写于
3月 31, 2023
作者:
D
Dejan Mijić
提交者:
GitHub
3月 31, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use specialized chunk builders (#799)
上级
dabc405a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
48 addition
and
11 deletion
+48
-11
modules/redis/src/main/scala/zio/redis/SingleNodeExecutor.scala
...s/redis/src/main/scala/zio/redis/SingleNodeExecutor.scala
+1
-1
modules/redis/src/main/scala/zio/redis/internal/RespValue.scala
...s/redis/src/main/scala/zio/redis/internal/RespValue.scala
+47
-10
未找到文件。
modules/redis/src/main/scala/zio/redis/SingleNodeExecutor.scala
浏览文件 @
08b69e8d
...
...
@@ -49,7 +49,7 @@ final class SingleNodeExecutor private (
requests
.
takeBetween
(
1
,
RequestQueueSize
).
flatMap
{
requests
=>
val
bytes
=
requests
.
foldLeft
(
ChunkBuilder
.
make
[
Byte
]
())((
buffer
,
req
)
=>
buffer
++=
RespValue
.
Array
(
req
.
command
).
asBytes
)
.
foldLeft
(
new
ChunkBuilder
.
Byte
())((
buffer
,
req
)
=>
buffer
++=
RespValue
.
Array
(
req
.
command
).
asBytes
)
.
result
()
connection
...
...
modules/redis/src/main/scala/zio/redis/internal/RespValue.scala
浏览文件 @
08b69e8d
...
...
@@ -29,22 +29,59 @@ private[redis] sealed trait RespValue extends Product with Serializable { self =
final
def
asBytes
:
Chunk
[
Byte
]
=
self
match
{
case
NullBulkString
=>
NullStringEncoded
case
NullArray
=>
NullArrayEncoded
case
SimpleString
(
s
)
=>
Headers
.
SimpleString
+:
encode
(
s
)
case
Error
(
s
)
=>
Headers
.
Error
+:
encode
(
s
)
case
Integer
(
i
)
=>
Headers
.
Integer
+:
encode
(
i
.
toString
)
case
NullBulkString
=>
NullStringEncoded
case
NullArray
=>
NullArrayEncoded
case
SimpleString
(
s
)
=>
val
builder
=
new
ChunkBuilder
.
Byte
()
builder
+=
Headers
.
SimpleString
builder
++=
encode
(
s
)
builder
++=
CrLf
builder
.
result
()
case
Error
(
s
)
=>
val
builder
=
new
ChunkBuilder
.
Byte
()
builder
+=
Headers
.
Error
builder
++=
encode
(
s
)
builder
++=
CrLf
builder
.
result
()
case
Integer
(
i
)
=>
val
builder
=
new
ChunkBuilder
.
Byte
()
builder
+=
Headers
.
Integer
builder
++=
encode
(
i
.
toString
)
builder
++=
CrLf
builder
.
result
()
case
BulkString
(
bytes
)
=>
Headers
.
BulkString
+:
(
encode
(
bytes
.
length
.
toString
)
++
bytes
++
CrLf
)
val
builder
=
new
ChunkBuilder
.
Byte
()
builder
+=
Headers
.
BulkString
builder
++=
encode
(
bytes
.
length
.
toString
)
builder
++=
CrLf
builder
++=
bytes
builder
++=
CrLf
builder
.
result
()
case
Array
(
elements
)
=>
val
data
=
elements
.
foldLeft
(
Chunk
.
empty
[
Byte
])(
_
++
_
.
asBytes
)
Headers
.
Array
+:
(
encode
(
elements
.
size
.
toString
)
++
data
)
val
builder
=
new
ChunkBuilder
.
Byte
()
builder
+=
Headers
.
Array
builder
++=
encode
(
elements
.
size
.
toString
)
builder
++=
CrLf
elements
.
foreach
(
builder
++=
_
.
asBytes
)
builder
.
result
()
}
private
[
this
]
def
encode
(
s
:
String
)
:
Chunk
[
Byte
]
=
Chunk
.
fromArray
(
s
.
getBytes
(
StandardCharsets
.
US_ASCII
))
++
CrLf
private
[
this
]
def
encode
(
s
:
String
)
=
s
.
getBytes
(
StandardCharsets
.
US_ASCII
)
}
private
[
redis
]
object
RespValue
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录