Proposal: Add Redis::CommandRecorder
Problem
We have a tool to detect N+1 queries for database, however the N+1 problem can occur in Redis too. At the moment, we don't have a convenient way to identify them in tests.
Proposal
Add a Redis::CommandRecorder class with a similar interface as ActiveRecord::QueryRecorder.
Record all commands during the execution
control = Redis::CommandRecorder.new { subject.execute }
expect(control.count).to eq(10)
Record only specific keys
control = Redis::CommandRecorder.new(pattern: 'branch_names') { subject.execute }
expect(control.count).to eq(2)
Access only specific commands
control = Redis::CommandRecorder.new { subject.execute }
expect(control.by_name(:get).count).to eq(5)
MVC prototype
Roadmap
-
Create a simple implementation of Redis::CommandRecorder- !93180 (merged) -
Add documentation for Redis::CommandRecorder -
Add Rspec matchers to simplify the testing (for example, exceed_all_query_limit) -
Extend Redis::CommandRecorderwith additional methods if needed
Please leave a comment you have any ideas, suggestions.
Edited by Vasilii Iakliushin