What's New With 2.x
Last updated
Was this helpful?
Last updated
Was this helpful?
Version 2 is a major rewrite of our Java Extension. You can find the release notes and the major areas of improvement here.
By default Redis supports the concept of logical databases. In our previous extension you could only connect to database 0, which is the default database. This meant that all cache connections had to connect to this database and add a prefix key per connection to avoid collisions.
Now, you can add which logical database to connect to and partition your installation by logical database rather than by prefix. Thus, providing great separation of concerns for your connections and applications. On your cache connection details for the Redis Cache, just select which database number to connect to. That's it!
We have added the capability to connect to not only standalone Redis instances via our Redis Cache
connector, but we have now introduced the Redis Cluster Cache
connector. This connector can connect to any Redis Cluster and give you all the great features our extension gives.
We have also introduced several new functions for usage in a cluster cache:
RedisGetCluster( cacheName )
Get access to the underlying Redis Cluster Java class so you can execute native cluster commands.
RedisGetClusterNodes( cacheName )
Returns a struct of all the nodes and their appropriate Java classes representing their node connection pools.
We have introduced the capability for your CFML code to now leverage Redis Publish and Subscribe constructs. This will allow your CFML code to have native messaging via Redis.
Redis Pub/Sub implements the Publish/Subscribe messaging paradigm. This decoupling of publishers and subscribers can allow for greater scalability and a more dynamic network topology.
Subscribers express interest in one or more channels (literal channels or pattern channels).
Publishers send messages into channels.
Redis will push these messages into different subscribers which have matched the channel's message.
In order to leverage this pattern you will use the following two functions:
RedisPublish( channel, message, cacheName )
Publish a message into Redis into a specific channel.
RedisSubscribe( subscriber, channels, cacheName )
Subscribe to a channel for messages using a closure/lambda or a listener CFC
We have completely refactored our internal Java code to include code quality metrics via SonarLint, upgrades to JDK 8-11 constructs, internal streams and so much more.
Dealing with exceptions is always nasty. However, in this release we have optimized all exceptions so better debugging is added and we can pinpoint bugs and improvements.
LRE-35 cache filters for getting entries was not working
LRE-32 getting all values/entries was not passing a built key, so return struct was always null
LRE-23 LicenseHelper not validating all editions of similar product skus
LRE-41 Ability to choose which database to connect to in Redis, apart from 0 being the default
LRE-40 Migration of docs to gitbook
LRE-39 New redisSubscribe() so you can subscribe with closures/lambdas or CFCs to listen to Redis messages
LRE-38 New redisPublish() UDF so you can publish messages into the Redis cluster
LRE-37 New UDF redisGetClusterNodes() to get a map of cluster node objects
LRE-36 Redis Cluster protocol support (RedisCluster, Sentinel, AWS, DigitalOcean)
LRE-33 Redis publish and subscribe features
LRE-31 New native cfml function: redisGetCluster()
to get access to the native redis cluster manager
LRE-30 Improve all exception handling to show exception messages
LRE-29 Creation of a base class to share between cache implementations
LRE-28 Add docker redis cluster support
LRE-27 Update Jedis to 2.9.3
LRE-25 Allow for a new setting to allow for case-sensitive mode instead of case-insensitive mode (default)