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 +4 -4
- data/CHANGELOG.md +82 -0
- data/README.md +22 -0
- data/lib/solid_redis/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5a8d7e4c46fd3443d3eda55582111998c1c2f1cfa1d97745f53a8d39494d1dbf
|
|
4
|
+
data.tar.gz: bbd7f6c8da3509f605d20daf2ace8439e4d0f3ffc16bd4d4405a8e6d3f880723
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
data/lib/solid_redis/version.rb
CHANGED
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.
|
|
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.
|
|
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
|