ScalaCache: simple caching in Scala

  • 706 views
Uploaded on

https://github.com/cb372/scalacache

https://github.com/cb372/scalacache

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
706
On Slideshare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
4
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ScalaCache Chris Birchall #m3dev Tech Talk 2014/04/23
  • 2. ScalaCache Simple facade for popular cache systems ● Google Guava ● Ehcache ● Memcached ● Redis ● … easy to add your own
  • 3. Example Full source here https://gist.github.com/cb372/11200131
  • 4. The Java way: ● Unavoidable repetition ● Weak against refactoring KILLER FEATURE! Method memoization public int foo(int a, int b, String c) { String key = toKey(“foo”, a, b, c); return withCache(key, () -> { // … do stuff … return x; }); }
  • 5. The Spring way: ● AOP, Proxy objects = runtime magic ● Some restrictions, e.g. cannot call method from the same class KILLER FEATURE! Method memoization @Cacheable(“cacheName”) public int foo(int a, int b, String c) { // … do stuff ... return x; }
  • 6. The ScalaCache way: ● Macros = compile-time magic! ● Auto-generates cache key, e.g. “com. bar.Baz.foo(123, 456, xyz)” KILLER FEATURE! Method memoization def foo(a: Int, b: Int, c: String): Int = memoize { // … do stuff … x }
  • 7. Aside: Quasiquotes Macros got a lot easier to write in 2.11 e.g. Before After
  • 8. Roadmap Investigating new features for ScalaCache ● Async support ● Versioning, a.k.a. key-based expiration ● Customizable serialization ● API improvements ● Integration with browser caching à la Play Cache
  • 9. Try it! scalaVersion := 2.11.0 resolvers += “Sonatype snapshots” at “https://oss.sonatype.org/content/repositories/snapshots/” libraryDependencies += “com.github.cb372” %% “scalacache” % “0.3.0-SNAPSHOT” More info at https://github.com/cb372/scalacache