Memcached的Scala客戶端:Memcontinuationed
Memcontinuationed是一個Memcached的Scala客戶端。Memcontinuationed是JVM上最快的memcached客戶端,比spymemcached 更快。
示例代碼:
import com.dongxiguo.memcontinuationed.Memcontinuationed import com.dongxiguo.memcontinuationed.StorageAccessor import java.io._ import java.net._ import java.nio.channels.AsynchronousChannelGroup import java.util.concurrent.Executors import scala.util.continuations.reset import scala.util.control.Exception.Catcher object Sample { def main(args: Array[String]) { val threadPool = Executors.newCachedThreadPool() val channelGroup = AsynchronousChannelGroup.withThreadPool(threadPool) // The locator decide where the memcached server is. // You may want to implement ketama hashing here. def locator(accessor: StorageAccessor[_]) = { new InetSocketAddress("localhost", 1978) } val memcontinuationed = new Memcontinuationed(channelGroup, locator) // The error handler implicit def catcher:Catcher[Unit] = { case e: Exception => scala.Console.err.print(e) sys.exit(-1) } reset { memcontinuationed.set(MyKey("hello"), "Hello, World!") val result = memcontinuationed.require(MyKey("hello")) assert(result == "Hello, World!") println(result) sys.exit() } } } /** * `MyKey` specifies how to serialize the data of key/value pair. */ case class MyKey(override val key: String) extends StorageAccessor[String] { override def encode(output: OutputStream, data: String, flags: Int) { output.write(data.getBytes("UTF-8")) } override def decode(input: InputStream, flags: Int): String = { val result = new Array[Byte](input.available) input.read(result) new String(result, "UTF-8") } }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!