pogocache | bobek.cz
Josh Baker anunciou
Pogocache é um software de cache rápido criado do zero com foco em baixa latência e eficiência da CPU.
Mais rápido: Pogocache é mais rápido que Memcache, Valkey, Redis, Dragonfly e Garnet. Possui a menor latência por solicitação, proporcionando os tempos de resposta mais rápidos. Ele é otimizado para escalar de um a vários núcleos, oferecendo o melhor desempenho de thread único e multithread.
Incorporável: Opcionalmente, em vez de executar o Pogocache como um programa baseado em servidor, o arquivo pogocache.c independente pode ser compilado em software existente, ignorando a rede e acessando diretamente o cache de forma programática. A execução integrada fornece velocidade bruta, com mais de 100 milhões de operações por segundo.
Há uma seção de detalhes do design
Outro recurso interessante é o suporte a diferentes APIs – ele emula os protocolos Redis e Memcached, além do protocolo psql wire e http simples.
❯ curl -X PUT -d "my value" http://localhost:9401/mykey
Stored
❯ telnet localhost 9401
Connected to localhost.
KEYS *
*1
$5
mykey
GET mykey
$8
my value
QUIT
+OK
Connection closed by foreign host.
❯ psql -h localhost -p 9401
psql (17.5 (Debian 17.5-1), server 1.0.0-1-g9c2a173 (Pogocache))
WARNING: psql major version 17, server major version 1.0.
Some psql features might not work.
Type "help" for help.
bobek=> GET mykey
bobek-> ;
value
----------
my value
(1 row)
bobek=> SET mykey 'another value';
SET 1
bobek=> \q
❯ curl http://localhost:9401/mykey
another value
E isso suporta tempo de vida nas chaves! Mesmo via interface http via ttl parâmetro:
❯ curl -X PUT -d "temporal flux" 'http://localhost:9401/mykey?ttl=10'
Stored
❯ curl http://localhost:9401/mykey ; echo -e '\n\n-----\n' ; sleep 10 ; curl -i http://localhost:9401/mykey
temporal flux
-----
HTTP/1.1 404 Not Found
Content-Length: 11
Connection: Close
Not Found
Josh tem outros projetos muito interessantes
Tile38 é um armazenamento de dados de geolocalização na memória de código aberto (licenciado pelo MIT), índice espacial e servidor de cerca geográfica em tempo real. Ele suporta uma variedade de tipos de objetos, incluindo pontos de latitude/longitude, caixas delimitadoras, blocos XYZ, Geohashes e GeoJSON.
