solid-redis 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa178f3f726a1fe71f54af0aacebb6bb93890c86c4068e518acf1bbb7de16a67
4
- data.tar.gz: 2b834a7e586b947cc39486bc0107614e7faa9db2aa3b3c91ab365c58db9b314e
3
+ metadata.gz: 5a8d7e4c46fd3443d3eda55582111998c1c2f1cfa1d97745f53a8d39494d1dbf
4
+ data.tar.gz: bbd7f6c8da3509f605d20daf2ace8439e4d0f3ffc16bd4d4405a8e6d3f880723
5
5
  SHA512:
6
- metadata.gz: cc25f3b1e2ee529877e39f3da367ad966fcdeb35283732f7ad2d144ce4d78b8c3e1476203f6910525e80bceb7cf6a9f3bc7916c4dc1ac401ea9b97130f80937e
7
- data.tar.gz: cd5472d06a641f06bfe1a13d7bfd50b530bfc8126ce07cfb34484f19ae3842da24dedc36e51863225603861b0b23057b923164db817087667d91f86caa1aece9
6
+ metadata.gz: 3744b1d0cecccd3e286445f5224852d27220afb7cbcfe763d4cf500ddea03976a4e7a73586276219446cfcb590ca09f174510f9f426063f868d5e0d8bf797d41
7
+ data.tar.gz: d3ae71c56576195f4067db3d3384c7aa19a6c0fad306dbd588cb1562d09289bb0fc39957f80149184eec63ce3e415b169956e1bde816209209e454e85725330f
data/CHANGELOG.md ADDED
@@ -0,0 +1,82 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file. The format
4
+ follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the
5
+ project adheres to [Semantic Versioning](https://semver.org/).
6
+
7
+ ## [1.0.2] - 2026-09-27
8
+
9
+ ### Added
10
+
11
+ - `CHANGELOG.md` and `changelog_uri` gem metadata.
12
+
13
+ ### Changed
14
+
15
+ - README: describe the test suite's fake server and how to check against a
16
+ real Redis or local cluster.
17
+
18
+ ## [1.0.1] - 2026-09-27
19
+
20
+ ### Changed
21
+
22
+ - README: document the Cluster architecture (`ClusterConfig`/`ClusterState`).
23
+
24
+ ## [1.0.0] - 2026-09-27
25
+
26
+ ### Added
27
+
28
+ - `Client#blocking_call(timeout, *command)` and `#blocking_call_v` for BLPOP,
29
+ BRPOP, BZPOPMIN, XREAD BLOCK and similar commands. The read timeout is
30
+ extended by `timeout`; `nil`/`0` waits forever. Blocking commands are never
31
+ retried. Also available on `Pool`.
32
+ - Pub/Sub: `Config#new_subscription` and `SentinelConfig#new_subscription`
33
+ return a `SolidRedis::Subscription` bound to a dedicated connection, with
34
+ `subscribe`/`psubscribe`/`ssubscribe`, `next_message(timeout:)`,
35
+ `each_message`, `ping`, and automatic resubscription after reconnect.
36
+ - Redis Cluster: `SolidRedis.cluster(nodes:, max_redirections:, **options)`
37
+ builds a shareable `ClusterConfig`. Each Ractor keeps its own `ClusterState`
38
+ (slot table and per-node clients). `ClusterClient` handles `MOVED`, `ASK`,
39
+ `TRYAGAIN` and `CLUSTERDOWN`, extracts routing keys (hash tags, EVAL/FCALL,
40
+ XREAD STREAMS, ZUNION-style commands) and runs pipelines grouped per node
41
+ while preserving reply order.
42
+ - `RESP::Reader#with_timeout` and `#wait_readable`.
43
+
44
+ ## [0.2.1] - 2026-09-27
45
+
46
+ ### Changed
47
+
48
+ - README: refresh the downloads badge.
49
+
50
+ ## [0.2.0] - 2026-09-27
51
+
52
+ ### Added
53
+
54
+ - `Client#pipelined(exception: false)` returns `CommandError` instances in
55
+ place instead of raising the first one.
56
+
57
+ ## [0.1.1] - 2026-09-27
58
+
59
+ ### Added
60
+
61
+ - README usage examples.
62
+
63
+ ### Changed
64
+
65
+ - Require Ruby >= 3.1; CI runs Ruby 3.1 through 4.0.
66
+
67
+ ## [0.1.0] - 2026-09-27
68
+
69
+ ### Added
70
+
71
+ - Initial release: immutable, Ractor-shareable `Config` and `SentinelConfig`
72
+ with per-Ractor `SentinelState`, `Client` (RESP2/RESP3, TCP, Unix socket,
73
+ TLS, reconnection), `Pool` owned by a single Ractor, pipelines, and
74
+ lifecycle callbacks via `callback-collection`.
75
+
76
+ [1.0.2]: https://github.com/nicolasva/solid-redis/compare/v1.0.1...v1.0.2
77
+ [1.0.1]: https://github.com/nicolasva/solid-redis/compare/v1.0.0...v1.0.1
78
+ [1.0.0]: https://github.com/nicolasva/solid-redis/compare/v0.2.1...v1.0.0
79
+ [0.2.1]: https://github.com/nicolasva/solid-redis/compare/v0.2.0...v0.2.1
80
+ [0.2.0]: https://github.com/nicolasva/solid-redis/compare/v0.1.1...v0.2.0
81
+ [0.1.1]: https://github.com/nicolasva/solid-redis/compare/v0.1.0...v0.1.1
82
+ [0.1.0]: https://github.com/nicolasva/solid-redis/releases/tag/v0.1.0
data/README.md CHANGED
@@ -60,6 +60,12 @@ cross a Ractor boundary. Its first use in each Ractor creates a
60
60
  Sentinel connections are opened only while resolving a target and are then
61
61
  closed. Resolution is cached until `reset` or a connection/failover error.
62
62
 
63
+ `SolidRedis::ClusterConfig` follows the same pattern: the shareable
64
+ specification holds the seed nodes, and each Ractor keeps a
65
+ `SolidRedis::ClusterState` with its slot table, one client per node, and its
66
+ own mutex. `MOVED` replies update only the local table. Pub/Sub subscriptions
67
+ and blocking commands likewise run on connections owned by the calling Ractor.
68
+
63
69
  ## Requirements
64
70
 
65
71
  Ruby **3.1 or newer** is required (tested on 3.1, 3.2, 3.3, 3.4, and 4.0).
@@ -583,6 +589,22 @@ bundle exec rake
583
589
  The default task runs the Minitest suite and builds the gem in `pkg/`.
584
590
  CI runs the suite on Ruby 3.1 through 4.0.
585
591
 
592
+ The suite needs no running Redis: it uses an in-process fake server
593
+ (`test/support/fake_redis_server.rb`) that speaks RESP2/RESP3, Sentinel,
594
+ Pub/Sub and a three-node Cluster topology. To try a specific Ruby version:
595
+
596
+ ```sh
597
+ RBENV_VERSION=4.0.1 rbenv exec bundle exec rake test
598
+ ```
599
+
600
+ To exercise the client against a real server, start `redis-server` and run
601
+ snippets from the examples above with `bundle exec ruby -Ilib`. A local
602
+ cluster for manual checks can be created with three
603
+ `redis-server --port 700X --cluster-enabled yes` processes followed by
604
+ `redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 --cluster-yes`.
605
+
606
+ The changelog lives in `CHANGELOG.md`; add an entry for every release.
607
+
586
608
  ## Publishing
587
609
 
588
610
  Releases use RubyGems Trusted Publishing. Configure a pending trusted
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SolidRedis
4
- VERSION = "1.0.0"
4
+ VERSION = "1.0.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solid-redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Vandenbogaerde
@@ -78,6 +78,7 @@ executables: []
78
78
  extensions: []
79
79
  extra_rdoc_files: []
80
80
  files:
81
+ - CHANGELOG.md
81
82
  - LICENSE.txt
82
83
  - README.md
83
84
  - lib/solid_redis.rb
@@ -103,8 +104,9 @@ licenses:
103
104
  - MIT
104
105
  metadata:
105
106
  rubygems_mfa_required: 'true'
106
- documentation_uri: https://www.rubydoc.info/gems/solid-redis/1.0.0
107
+ documentation_uri: https://www.rubydoc.info/gems/solid-redis/1.0.2
107
108
  source_code_uri: https://github.com/nicolasva/solid-redis
109
+ changelog_uri: https://github.com/nicolasva/solid-redis/blob/main/CHANGELOG.md
108
110
  rdoc_options: []
109
111
  require_paths:
110
112
  - lib