V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
sajesemuy

NuSTER: HTTP 协议,面向用户, RESTful 的 NoSQL 缓存服务器

  •  
  •   sajesemuy ·
    jiangwenyuan · Jul 9, 2018 · 2373 views
    This topic created in 2862 days ago, the information mentioned may be changed or developed.

    NuSTER 是一个基于 HAProxy 的高性能 HTTP 缓存服务器和 RESTful NoSQL 缓存服务器,既可以用作类似 Varnish 或者 Nginx 那样的 HTTP 缓存服务器,来缓存动态或者静态的 HTTP 资源,也可以用作 RESTful NoSQL 缓存服务器, 用 HTTP POST/GET/DELETE 来 添加 /取得 /删除 Key/Value。

    https://github.com/jiangwenyuan/nuster

    RESTful NoSQL 缓存服务器

    可以像 Memcached 或者 Redis 那样放在应用和数据库之间作为内部 KV 缓存使用,也可以放在用户和应用之间作为面向用户的 NoSQL 使用。 支持 header, cookie 等等,所以可以将不同的用户数据存到相同的路劲。

    • HAProxy 的所有特性(HTTPS, HTTP/2, ACL, etc)
    • 有条件的缓存
    • 内部 KV 缓存
    • 面向用户缓存
    • 支持任何类型的数据
    • 支持所有编程语言,不需要特定的库,只需 HTTP 支持

    基本操作

    Set

    curl -v -X POST -d value1 http://127.0.0.1:8080/key1
    curl -v -X POST --data-binary @icon.jpg http://127.0.0.1:8080/imgs/icon.jpg
    

    Get

    curl -v http://127.0.0.1:8080/key1

    Delete

    curl -v -X DELETE http://127.0.0.1:8080/key1

    Response

    Check status code.

    • 200 OK
      • POST/GET: 成功
      • DELETE: 总是
    • 400 Bad request
      • 空值
      • 不正确的 acl, rules, etc
    • 404 Not Found
      • POST: rule tests 失败
      • GET: not found
    • 405 Method Not Allowed
      • 其他的 methods
    • 500 Internal Server Error
      • 发生未知错误
    • 507 Insufficient Storage
      • 超过 data-size

    分用户的 data

    通过在 key 里加入 header, cookie 等等,可以将不同的用户数据存到相同的路劲。

    nuster rule r1 key method.scheme.host.uri.header_userId if { path /mypoint }
    nuster rule r2 key method.scheme.host.uri.cookie_sessionId if { path /mydata }
    

    Set

    curl -v -X POST -d "333" -H "userId: 1000" http://127.0.0.1:8080/mypoint
    curl -v -X POST -d "555" -H "userId: 1001" http://127.0.0.1:8080/mypoint
    
    curl -v -X POST -d "userA data" --cookie "sessionId: ijsf023xe" http://127.0.0.1:8080/mydata
    curl -v -X POST -d "userB data" --cookie "sessionId: rosre329x" http://127.0.0.1:8080/mydata
    

    Get

    curl -v http://127.0.0.1:8080/mypoint
    < 404 Not Found
    
    curl -v -H "userId: 1000" http://127.0.0.1:8080/mypoint
    < 200 OK
    333
    
    curl -v --cookie "sessionId: ijsf023xe" http://127.0.0.1:8080/mydata
    < 200 OK
    userA data
    
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   954 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 22:51 · PVG 06:51 · LAX 15:51 · JFK 18:51
    ♥ Do have faith in what you're doing.