Show HN: Pogocache – Fast caching software

(github.com)

74 points | by tidwall 11 hours ago

10 comments

  • drewda 11 hours ago
    Always great to see his open-source creations, like:

    - a Redis like cache purpose built for real-time spatial locations: https://tile38.com/

    - go package for reading JSON: https://github.com/tidwall/gjson

    • tidwall 6 hours ago
      Glad to bring another one into this world.
  • simonw 10 hours ago
    I thought I recognized the tidwall name - Josh is also responsible for tg which is a really neat, very tight C geospatial library: https://github.com/tidwall/tg
    • tidwall 6 hours ago
      Thanks you for the blog post about TG when it came out.
  • jasonthorsness 10 hours ago
    The README doesn’t seem to explain _why_ it is faster. Is it just highly hand-optimized? Is there some main technique used?
    • tidwall 10 hours ago
      Yes, it is highly hand optimized. There's a description of some of the methods I used near the bottom of there README. I mainly focused on minimizing contention, with the sharded hashmap and such. But the networking layer is carefully crafted.
  • stevelacy 9 hours ago
    Congrats on launching! Was following along with the development, glad to see it launched
    • tidwall 8 hours ago
      Thanks Steve. Your feedback was very helpful.
  • simonw 10 hours ago
    Supporting HTTP, Redis and PostgreSQL protocols at the same time is a neat trick!

      psql -h localhost -p 9401
      => SET mykey 'my value';
      => GET mykey;
      => DEL mykey;
    • tidwall 6 hours ago
      The protocols are autodetected. No need to carry multiple ports around.
  • squirrellous 5 hours ago
    Congrats! Would you mind sharing what part of the design makes this faster than the competitors?
    • tidwall 4 hours ago
      Thanks! The Pogocache sharded hashmap design is optimized for extremely low contention and good memory locality. It super rare for any two threads to ever wait on the same key. That's the biggest part and it's all in the src/pogocache.c file. But the network layer is finely tuned too.

      Mostly I perfed and profiled ad nauseam, monitoring cpu cycles along the way. I found that keeping a focus on latency and cycles was primo, and the rest fell into place.

  • Imustaskforhelp 10 hours ago
    Really looks fascinating.. Might need a deeper dive.

    Also.. like, it says that you plan on supporting sql? is this true? What does that actually mean really since I guess it might then compete with things like sqlite/duckdb?

    Genuinely curious, great project! Starred!

    • tidwall 10 hours ago
      Not intending to make pogocache into a sql database. I prefer keeping it a cache. More so exploring ways to work with existing databases such as sqlite, duckdb, postgres. Kinda like providing proxy-ish operations that transparently cache sql reads.
  • lormayna 10 hours ago
    Is the name related to Tadej Pogacar?
    • cedricium 9 hours ago
      Hah I had the same question! Thought the project was aptly named if referring to the cycling champ if that’s what it was meant to be.
    • philipajohnston 10 hours ago
      +1
    • tidwall 10 hours ago
      No
  • nodesocket 11 hours ago
    Very interesting. Like the idea of using http, redis, or even PostgreSQL clients.

    Is there a way to provide the auth password via an envar instead of a command line arg?

        pogocache --auth mypass
    • tidwall 11 hours ago
      That's the only way right now. The other ways I'm considering is with an environment variable and/or acl.
      • sureglymop 10 hours ago
        May I suggest the ability to specific a path to a file that it is then read from.
        • tidwall 6 hours ago
          Like an ACL file?
  • SquidJack 11 hours ago
    very nice
    • CyberDildonics 5 hours ago
      What is nice about it? You have 9 comments over 3.5 years and they are all promoting your chat bot start up.
    • tidwall 6 hours ago
      Thanks!