• 2xshu
    2019-07-22
    老师,这篇文章我反复看了几遍。其实我还是没有领会做这个项目的真正目的和使用场景呢。因为我理解的是即是做了这样封装,和直接使用ngx.shared.DICT感觉没什么区别呢?ngx.shared.DICT操作也是原子操作的,并且ngx.shared.DICT也是一个全局共享的变量。

    作者回复: 最大的不同之处在于可以支持集群,而共享字典只能是单机使用。

     1
     4
  • 罐头瓶子
    2019-07-19
    openresty lua的断点调试现在可以使用vscode插件的方式来实现。插件的名字叫luaide,我现在正在使用,挺好用的。

    作者回复: 👍

    
     2
  • katichar
    2019-07-19
    在http和stream之前实现数据共享,如果对性能有要求,是不是resty.memcached是一个比较好的方案?

    作者回复: 走了一层外部的网络通信,性能会有一些影响,但貌似也是当前的一个方案。最好是内部打通,期望 OpenResty 实现这个功能。

     1
     2
  • 回家
    2019-07-27
    我在执行这里的例子的时候,解决了一些语法错误之后,已经能够正常的在resty -e执行时设置和获得key value了,但是在服务器侧循环报一个错误,2019/07/27 13:35:43 [error] 25017#25017: *1 attempt to receive data on a closed socket: u:00007FDA656A5530, c:00007FDA655FE3F0, ft:0 eof:1, client: 127.0.0.1, server: 0.0.0.0:11212。这个错误,通过设置指令lua_socket_log_errors off;的确关闭了错误的循环打印,这里的根本原因是,因为server.lua里是一个循环,然后客户端断开socket了,服务侧还在循环读取数据,导致一直提示这个错误吗?

    作者回复: 是的,这种错误是可以忽略的

     2
     1
  • Geek_Wx.71
    2019-07-25
    - -终于调通了...标点符号"" '' “” , tonumber()
    最要命的是少个空格
    
     1
  • 姚坤
    2019-09-20
    我测试运行过程中需要将 function _M.get(tcpsock, keys) 中的这一行:reply = reply .. "VALUE " .. key .. " " .. flags .. " " .. #value .. "\r\n" .. value .. "\r\n" 的 “VALUE"后加一个空格。
    否则返回的是nil。
    跟踪到memcached.lua中的get 函数有如下判断
    local flags, len = match(line, '^VALUE %S+ (%d+) (%d+)$')
        if not flags then
            return nil, nil, line
        end
    展开
    
    
  • 写点啥呢
    2019-09-06
    请问老师,你在@2xshu同学的留言里提到了这个实现支持集群,而共享字典只能单机使用,我没有理解,请问支持集群是指可以跨物理机共享存储么?那具体是如何做到的呢?

    作者回复: 你使用 memcached 的客户端,都是支持一致性 hash 这样的算法,这样就等于是实现了集群储存了。

     1
    
  • 程斌
    2019-08-20
    我写了一个空的代码,直接写一个死循环,会直接导致cpu 100%。这是正常情况?

    作者回复: 要看下循环里面具体做了什么

    
    
  • 程斌
    2019-07-31
    老师见字好。我来实现文中逻辑,但是最后总说我连接close,详情如下:https://www.iffor.cn/job/openresty-memcached-server.html,有时间的时候帮我看看。我这边准备按照memcache去找一找原因。

    作者回复: 你给的链接中没有具体的报错信息。另外,/usr/local/openresty3/lib/resty/memached 这个目录是拼写错了吗?最后的目录名应该 memcached 而不是 memached,少了一个字母 c

     1
    
  • 洁
    2019-07-30
    老师,这次示例memcached server还是没有调通,您在后面答疑的时候能大约讲一下吗

    作者回复: 是哪一部分的问题呢?有具体的报错吗?

    
    
  • helloworld
    2019-07-24
    如果是为了实现memcached集群,那服务端口就不能监听127.0.0.1了,对吧

    作者回复: 是的,这个需要修改下

    
    
  • helloworld
    2019-07-24
    和2xshu同学的感受一样,使用共享字典封装模拟成memcached服务,和直接使用共享字典,对于项目需求到低有啥本质区别,对于这个项目需求直接使用共享字典不就行了嘛,为啥还要费事的去封装一遍呢,求解惑。

    作者回复: 直接使用共享字典就没有办法做到集群了,只能用本机的内存资源

     1
    
我们在线,来聊聊吧