clj-xmemcached: memcached client for clojure

    xiaoxiao2023-12-25  31

    #  clj-xmemcached Clj-xmemcached is an opensource memcached client for clojure wrapping  xmemcached.  Xmemcached is an opensource high performance memcached client for java. ## Leiningen Usage To include clj-xmemcached,add: [clj-xmemcached “0.1.1”]  </pre> to your project.clj. ## Usage ### Create a client <div style="background-color: #eeeeee;font-size: 13px;border: 1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%"><!--Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--><span style="color: #000000">(use [clj</span><span style="color: #000000">-</span><span style="color: #000000">xmemcached.core]) (def client (xmemcached </span><span style="color: #000000">"</span><span style="color: #000000">host:port</span><span style="color: #000000">"</span><span style="color: #000000">)) (def client (xmemcached </span><span style="color: #000000">"</span><span style="color: #000000">host1:port1 host2:port2</span><span style="color: #000000">"</span><span style="color: #000000"> :protocol </span><span style="color: #000000">"</span><span style="color: #000000">binary</span><span style="color: #000000">"</span><span style="color: #000000">))</span></div> Then we create a memcached client using binary protocol to talk with memcached servers host1:port1 and host2:port2. Valid options including: <pre> :name Client’s name :protocol Protocol to talk with memcached,a string value in text,binary or kestrel,default is text protocol. :hash Hash algorithm,a string value in consistent or standard,default is standard hash. :timeout Operation timeout in milliseconds,default is five seconds. :pool Connection pool size,default is one. ### Store items <!– Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ –> (xset client  key   dennis ) (xset client  key   dennis   100 ) (xappend client  key    zhuang ) (xprepend client  key   hello, ) The value 100 is the expire time for the item in seconds.Store functions include xset,xadd,xreplace,xappend and xprepend.Please use doc to print documentation for these functions. ### Get items <!–Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--> (xget client  key ) (xget client  key1   key2   key3 ) (xgets client  key ) `</div> xgets returns a value including a cas value,for example: <div style="background-color: #eeeeee;font-size: 13px;border: 1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%"><!--Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--><span style="color: #000000"> {:value </span><span style="color: #000000">"</span><span style="color: #000000">hello,dennis zhuang</span><span style="color: #000000">"</span><span style="color: #000000">, :</span><span style="color: #0000ff">class</span><span style="color: #000000"> net.rubyeye.xmemcached.GetsResponse, :cas </span><span style="color: #000000">396</span><span style="color: #000000">}</span> </div> And bulk get returns a HashMap contains existent items. ### Increase/Decrease numbers <div style="background-color: #eeeeee;font-size: 13px;border: 1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%"><!--</div> Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><span style="color: #000000">(xincr client </span><span style="color: #000000">"</span><span style="color: #000000">num</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">) (xdecr client </span><span style="color: #000000">"</span><span style="color: #000000">num</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">) (xincr client </span><span style="color: #000000">"</span><span style="color: #000000">num</span><span style="color: #000000">"</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">)</span> </div> Above codes try to increase/decrease a number in memcached with key "num",and if the item is not exists,then set it to zero. ### Delete items <div style="background-color: #eeeeee;font-size: 13px;border: 1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%"><!--Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--><span style="color: #000000">(xdelete client </span><span style="color: #000000">"</span><span style="color: #000000">num</span><span style="color: #000000">"</span><span style="color: #000000">)</span> `

    Compare and set

    <!–Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--> (xcas client  key  inc) `</div> We use inc function to increase the current value in memcached and try to compare and set it at most Integer.MAX_VALUE times. xcas can be called as: <div style="background-color: #eeeeee;font-size: 13px;border: 1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%"><!--Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--><span style="color: #000000"> (xcas client key cas</span><span style="color: #000000">-</span><span style="color: #000000">fn max</span><span style="color: #000000">-</span><span style="color: #000000">times)</span></div> The cas-fn is a function to return a new value,set the new value to <div style="background-color: #eeeeee;font-size: 13px;border: 1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%"><!--Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--><span style="color: #000000">(cas</span><span style="color: #000000">-</span><span style="color: #000000">fn current</span><span style="color: #000000">-</span><span style="color: #000000">value)</span> `

    Shutdown

    <!–Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--> (xshutdown client)

    Flush

    <!–Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--> (xflush client) (xflush client (InetSocketAddress. host port))

    Statistics

    <!–Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/--> (xstats client)

    Example

    Please see the example code in example/demo.clj

    License

    Copyright (C) 2011-2014 dennis zhuang[killme2008@gmail.com]

    Distributed under the Eclipse Public License, the same as Clojure.

    本文来源于"阿里中间件团队播客",原文发表时间" 2011-10-31"

    相关资源:raml-clj-parser:在clojure中实现的RAML解析器-源码
    最新回复(0)