如何让resty.redis的mset 支持table

51 views
Skip to first unread message

Ivan King

unread,
Nov 14, 2016, 4:43:29 AM11/14/16
to openresty
redis存在一个问题 就是big value(>1k)效率很低 到了>10k的value就更加难以接受

为了解决这个问题,提升效率  应用逻辑对big value做分组操作 切割成n个小value值 使用mset来设置多个k-v 来保证不同的k-v打到不同的分片 程序读取再做拼接逻辑



但是这个n为随机的 但是mset又不支持table参数传递 请问这个大家都是怎么解决的
mset_str = "test_1","YWJj","test_2","ZGVm","test_3","ZyAx","test_4","MjM0","test_5","NTY3","test_6","ODk="
local res,err = _redis:mset(mset_str)   错误
local res,err = _redis:mset("test_1","YWJj","test_2","ZGVm","test_3","ZyAx","test_4","MjM0","test_5","NTY3","test_6","ODk=") 正确


Zexuan Luo

unread,
Nov 14, 2016, 6:57:17 AM11/14/16
to openresty
你需要 unpack 一下:
https://www.lua.org/manual/5.1/manual.html#pdf-unpack

在 2016年11月14日星期一 UTC+8下午5:43:29,Ivan King写道:

Ivan King

unread,
Nov 15, 2016, 2:54:57 AM11/15/16
to openresty
谢谢我去了解了解

在 2016年11月14日星期一 UTC+8下午7:57:17,Zexuan Luo写道:

Ivan King

unread,
Nov 15, 2016, 2:57:43 AM11/15/16
to openresty
但是网上有说unpack效率不高 这个怎么破


在 2016年11月14日星期一 UTC+8下午7:57:17,Zexuan Luo写道:
你需要 unpack 一下:

Zexuan Luo

unread,
Nov 15, 2016, 9:01:42 PM11/15/16
to openresty
放心吧,就算整个 API 只做 mset 一件事,瓶颈也多半在拼接发送给redis的报文和解析redis返回的结果上。

在 2016年11月15日星期二 UTC+8下午3:57:43,Ivan King写道:
Reply all
Reply to author
Forward
0 new messages