redsync | Distributed mutual exclusion lock using Redis for Go | Architecture library

 by   go-redsync Go Version: v4.0.4 License: BSD-3-Clause

kandi X-RAY | redsync Summary

kandi X-RAY | redsync Summary

redsync is a Go library typically used in Architecture applications. redsync has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

Redsync provides a Redis-based distributed mutual exclusion lock implementation for Go as described in this post. A reference library (by antirez) for Ruby is available at github.com/antirez/redlock-rb.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              redsync has a medium active ecosystem.
              It has 2537 star(s) with 273 fork(s). There are 23 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 1 open issues and 70 have been closed. On average issues are closed in 147 days. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of redsync is v4.0.4

            kandi-Quality Quality

              redsync has 0 bugs and 0 code smells.

            kandi-Security Security

              redsync has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              redsync code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              redsync is licensed under the BSD-3-Clause License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              redsync releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.
              It has 1051 lines of code, 85 functions and 20 files.
              It has medium code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of redsync
            Get all kandi verified functions for this library.

            redsync Key Features

            No Key Features are available at this moment for redsync.

            redsync Examples and Code Snippets

            No Code Snippets are available at this moment for redsync.

            Community Discussions

            Trending Discussions on redsync

            QUESTION

            Single-instance Redis lock with SETNX
            Asked 2019-Jun-13 at 23:59

            I need to connect to a single Redis instance from an application client.

            Since the client will be replicated in Kubernetes, I'm studying Redis documentation about locks to prevent races between the client replicas.

            After some googling and reading around, I zeroed in on these two resources:

            Interestingly the SETNX docs explicitly advise against using SETNX to implement locks, stating that it has basically become obsolete:

            The following pattern is discouraged in favor of the Redlock algorithm [...]

            We document the old pattern anyway because certain existing implementations link to this page as a reference.

            However the Redlock algorithm is specifically tailored for distributed locks, thus when one seeks to lock on multiple Redis instances - they actually refer to multiple masters.

            To go a bit further, the library redsync (golang) declares the New function as follows:

            ...

            ANSWER

            Answered 2019-Jun-13 at 23:59

            Yes, it's true that the Redlock algorithm is designed for a distributed Redis system, and that if you're using a single instance it should be fine to use the simpler locking methods described in the SET and SETNX documentation.

            However, a more important point is this: you probably don't need to use locks to avoid conflicts between multiple Redis clients. Redis locks are usually used to secure some external distributed resource (see my answer here for a bit more on this). Within Redis itself locks are generally not necessary; thanks to Redis' single-threaded nature, many commands are already atomic, and you have the ability to use transactions or Lua scripts to compose arbitrarily complex atomic operations.

            So my advice is to deisgn your client code to use atomicity to avoid conflict rather than trying to use a lock (distributed or otherwise).

            Source https://stackoverflow.com/questions/56589374

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install redsync

            Install Redsync using the go get command:. Two driver implementations will be installed; however, only the one used will be included in your project. See the examples folder for usage of each driver.
            Redigo
            Go-redis

            Support

            Reference
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries