Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

redic-sentinel

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redic-sentinel

  • 1.5.1
  • Rubygems
  • Socket score

Version published
Maintainers
2
Created
Source

Redis::Sentinel

Another redis automatic master/slave failover solution for ruby by using built-in redis sentinel.

It subscribes message with channel "+switch-master", when message received, it will disconnect current connection and connect to new master server.

Installation

Add this line to your application's Gemfile:

gem 'redic-sentinel'

We need redis-server 2.6.10 or later

And then execute:

$ bundle

Or install it yourself as:

$ gem install redic-sentinel

Usage

Specify the sentinel servers and master name

Redic.new(url, timeout, master_name: "master1", sentinels: [{host: "localhost", port: 26379}, {host: "localhost", port: 26380}])

After doing the above, you might still see #<Redic client v3.1.0 for redis://localhost:6379/0>. This is fine because redic-sentinel will only try to connect when it is actually required.

However, if none of the sentinel servers can be reached, a error will be thrown.

There are two additional options:

  1. :failover_reconnect_timeout (seconds) will block for that long when redis is unreachable to give failover enough time to take place. Does not wait if not given, or time given is 0.

  2. :failover_reconnect_wait (seconds) how long to sleep after each failed reconnect during a failover event. Defaults to 0.1s.

Example

Start redis master server, listen on port 16379

$ redis-server example/redis-master.conf

Start redis slave server, listen on port 16380

$ redis-server example/redis-slave.conf

Start 2 sentinel servers

$ redis-server example/redis-sentinel1.conf --sentinel
$ redis-server example/redis-sentinel2.conf --sentinel
$ redis-server example/redis-sentinel3.conf --sentinel

Run example/test.rb, which will query value of key "foo" every second.

$ bundle exec ruby example/test.rb

You will see output "bar" every second. Let's try the failover process.

  1. Stop redis master server.
  2. You will see error message output.
  3. Redis sentinel promote redis slave server to master. During this time you will see errors instead of "bar" while the failover is happening.
  4. Then you will see correct "bar" output every second again.

Example of Failover Timeout

Run the same example code above but run:

$ bundle exec ruby example/test_wait_for_failover.rb

You will see the stream of "bar" will stop while failover is taking place and will resume once it has completed, provided that failover takes less than 30 seconds.

Authors and Contributors

https://github.com/flyerhzm/redic-sentinel/graphs/contributors

Please fork and contribute, any help in making this project better is appreciated!

This project is a member of the OSS Manifesto.

Copyright @ 2012 - 2013 Richard Huang. See MIT-LICENSE for details

FAQs

Package last updated on 02 Feb 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc