The methods for manipulating Redis hashes were partially namespaced, but some of them weren't. This rounds out all those extra methods that need namespacing.
👍 Enable support for Redis Cluster by passing the
:clustersetting. Cluster support is now in Redis.rb, so we're taking advantage of it! Yay!
We're happy to announce the release of v1.5.0 of redis-store, which has 4 new features mostly related to using
Redis::Storein distributed setups. Redis, and the redis.rb client that we depend on, has added support for connecting to a group of Redis servers that make up the total cache store, and you can now use that support directly in
Redis::Storeand all of the redis-store gems that are in use in your Ruby applications.
🆕 New Features
👌 Support for distributed mget/read_multi
Allows using the
fetch_multimethods in Rails cache with a
👌 Support for Redis v4.x
✅ We now test against Redis.rb v4. There were no changes to the codebase as a result, but since the dependency was bumped we are now recommending the usage of the highest version of Redis client that your application will support.
👌 Support for UNIX path connections
👍 Since one can in theory connect to Redis over a UNIX socket, we now have support for doing so within
Redis::Store. This caused some errors previously.
➕ Add tests for
👍 Allow configuring the HashRing for a distributed store
👉 Uses the
Redis::HashRingfor selecting the proper server in a
🐛 Bug Fixes
🛠 Fix inefficient use of KEYS when calling FLUSHDB without a namespace
We can rely on the base command
FLUSHDBwhen there is no namespace, since this command should actually clear everything in the database.
🔧 Due to concerns over a possible vulnerability (should someone obtain write access to the Redis database the application is using) related to marshalling in #289 , we've replaced the
Serialization, allowing the user to specify their own serializer responding to the
.loadmethods. This is similar to how Dalli works.
🚀 Using an alternative serializer like
JSONmeans if your Redis server becomes compromised in any way, the compromise cannot affect your running app. However, not all objects serialize cleanly to YAML and/or JSON. In order to achieve backwards compatibility, we have supplied
Marshalas the default serializer object, and released a minor version of this gem. All recent versions of redis-store gems (like
redis-actionpack) that depend on this gem allow for
redis-storeup to but not including 2.0.0, so to get this version you can run:
bundle update redis-store
A CVE has been filed, CVE-2017-1000248, so that this issue is easier to refer to.
🚀 This is a minor release due to an additional marshalling feature,
👌 support for marshalling on the
msetmethod. Some bug fixes also
surrounding marshalling have also been included.
- Forward new Hash, not nil, when options are unset John Guidry
- 🏗 Enable cache and move to containerized build. Omer Katz
- ➕ Add support for marshalling mset John Guidry
- Set :raw => true if marshalling Tom Scott
💥 Breaking Changes
- 👍 Allow changing namespaces on the fly
- ✅ Begin testing against ruby 2.3.0
- 👉 Use batched deletes for flushdb with a namespace
- pass set command options to redis
- ⬆️ bump rbx 2
- 🛠 fix setex marshalling for distributed store
- 🔄 changes to new url
- ⚠ :warning: shadowing outer local variable - key, pattern, value
- ⚠ :warning: `*' interpreted as argument prefix
- ✂ Removed duplicated method ttl