Releases: redis-store/redis-store
v1.10.0
What's Changed
Other Changes
- Relax redis-rb version to allow for v5 by @stanhu in #351
- Remove deprecated global expectations by @hogelog in #354
- Fix setnx with expire when redis >= 4.6 by @hogelog in #357
- add github actions by @tubbo in #355
- Redis 5 compatibility fix by @PikachuEXE in #359
- Fix tests (when run locally) by @PikachuEXE in #365
- Change build status badge to GitHub Actions by @okuramasafumi in #364
- Bump to v1.10.0 by @radar in #367
New Contributors
- @stanhu made their first contribution in #351
- @hogelog made their first contribution in #354
- @okuramasafumi made their first contribution in #364
- @radar made their first contribution in #367
Full Changelog: v1.9.1...v1.10.0
v1.9.2
v1.8.2
Add Namespacing to All Hash Methods
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.
Support Redis Cluster
Enable support for Redis Cluster by passing the :cluster
setting. Cluster support is now in Redis.rb, so we're taking advantage of it! Yay!
Secure Redis URL (redis://) Support
Add support for rediss://
URLs for TLS encryption to the Redis server.
Support for Distributed Redis
We're happy to announce the release of v1.5.0 of redis-store, which has 4 new features mostly related to using Redis::Store
in 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::Store
and 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 read_multi
and fetch_multi
methods in Rails cache with a DistributedStore
.
PR: #282
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.
PR: #298
Add tests for Namespace#flushdb
PR: #299
Allow configuring the HashRing for a distributed store
Uses the Redis::HashRing
for selecting the proper server in a DistributedStore
.
PR: #304
Bug Fixes
Fix inefficient use of KEYS when calling FLUSHDB without a namespace
We can rely on the base command FLUSHDB
when there is no namespace, since this command should actually clear everything in the database.
PR: #297
Replace marshalling with serialization
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 Marshalling
feature with Serialization
, allowing the user to specify their own serializer responding to the .dump
and .load
methods. This is similar to how Dalli works.
Using an alternative serializer like YAML
or JSON
means 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 Marshal
as the default serializer object, and released a minor version of this gem. All recent versions of redis-store gems (like redis-activesupport
and redis-actionpack
) that depend on this gem allow for redis-store
up 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.
Improvements to marshalling
This is a minor release due to an additional marshalling feature,
support for marshalling on the mset
method. 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
Shoutouts to @tvjg and @thedrow who contributed (most of) the code for this release!