--
You received this message because you are subscribed to a topic in the Google Groups "Jedis" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jedis_redis/7ZJPFp_qTY0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jedis_redis...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Jedis" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jedis_redis...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "Jedis" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jedis_redis/7ZJPFp_qTY0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jedis_redis...@googlegroups.com.
--
You received this message because you are subscribed to a topic in the Google Groups "Jedis" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jedis_redis/7ZJPFp_qTY0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jedis_redis...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Today we had our first team meeting with the intentions to settle strong bases about the future of Jedis and we'd like to share with our community the items we came up with for our next major Jedis release.
Today we had our first team meeting with the intentions to settle strong bases about the future of Jedis and we'd like to share with our community the items we came up with for our next major Jedis release.
--
You received this message because you are subscribed to a topic in the Google Groups "Jedis" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jedis_redis/7ZJPFp_qTY0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jedis_redis...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Attachments:
1) We will setup a new super small project using the latest version if netty that only makes *set* and *get* operations to redis. We'll benchmark it against Jedis (Pipeline also) and then if results are promising we'll discuss the best way to build the new Jedis version around that2) We agreed that we're not supporting ShardedJedis as a core feature of Jedis 3.x. We will encourage the community to build it as a module/application around Jedis but we'll not maintain it officially.
Today we had our second team meeting to share our investigation and discuss about removing ShardedJedis and Async feature.Marcos wraps up our meeting as,1) We will setup a new super small project using the latest version if netty that only makes *set* and *get* operations to redis. We'll benchmark it against Jedis (Pipeline also) and then if results are promising we'll discuss the best way to build the new Jedis version around that2) We agreed that we're not supporting ShardedJedis as a core feature of Jedis 3.x. We will encourage the community to build it as a module/application around Jedis but we'll not maintain it officially.Regarding 1), we're all new to Netty, so contributors which have some experiences on Netty would be a great help to us.We'll start from non-blocking IO, and find out we can make blocking IO with Netty, too.
Regarding 2), as I was posted, we can simplify Jedis codes by dropping ShardedJedis from Jedis 3.x.https://github.com/xetorthio/jedis/pull/875 points out this, so you can take a look and comment.In next meeting we would share knowledge, experience, experimental about Netty, and take a decision about using Netty / NIO.We already have non-blocking async PR based on NIO, https://github.com/xetorthio/jedis/pull/713
Any opinions, thoughts, suggestions, and helps are always greatly appreciated!Thanks!Regards.Jungtaek Lim (HeartSaVioR)
2015년 1월 7일 수요일 오전 2시 5분 20초 UTC+9, Marcos NiLs 님의 말:Today we had our first team meeting with the intentions to settle strong bases about the future of Jedis and we'd like to share with our community the items we came up with for our next major Jedis release.We talked about working in two aspects mainly:Important features and things that must be improved:1. Code improvements (making command implementation simpler. naming conventions, code duplication, etc)
2. Add support for Async API (needs to be as performant as current Jedis version)
3. Add tests to jedis features (Sharded, Pipeline, JedisCluster, etc) to avoid silly bugs
4. Improve versioning and PRs handling so we can deliver faster and review easier
5. Work thoroughly in JedisClusterAnother important topic that was also debated what the necessity to stop supporting some features in pursuit of cleaner code and simplicity. For this objective we decided to investigate two possible solutions and take our decisions based on the results.1 Stop supporting ShardedJedis from 3.0 onwards in behalf of focusing our efforts to JedisCluster.2 Replace Jedis Pipeline with an async core.We wanted to share our conclusions with and hear your opinions. Take into account that Jedis is maintained by a very few people and it get's really difficult for us to move forward unless we take some actions to boost contributions and focus on core functionality and code simplicity.Of course thoughts and suggestions are always welcome.Marcos.
--
You received this message because you are subscribed to the Google Groups "Jedis" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jedis_redis...@googlegroups.com.
You received this message because you are subscribed to a topic in the Google Groups "Jedis" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/jedis_redis/7ZJPFp_qTY0/unsubscribe.
To unsubscribe from this group and all its topics, send an email to jedis_redis...@googlegroups.com.
Glanced a bit at the code and noticed a few things:
AsyncDispatcher.registerRequest
is synchronized. Since it only calls LinkedBlockingDeque.add
and Selector.wakeup
that should be unnecessary, as both are safe to call concurrently, and I don’t believe those two method calls need to be atomic.handleConnectionException
, while
loop does a peek
then a poll
, which is redundant, since poll
returns null
if empty. Probably not super important since it’s during an exceptional condition, but still…ConcurrentLinkedDeque
, which is a non-blocking deque implementation. This makes it better than LinkedBlockingDeque
under load, but is supposedly slightly less performant in the non-contended case. I think for this scenario, ConcurrentLinkedDeque
offers better scalability.On Tue, Feb 3, 2015 at 4:41 PM, 임정택 <kab...@gmail.com> wrote:
Current NIO version of Async feature provides only callback.
(Actually I'm wondering why Future is treated to async.)
If we will stick callback, we would have a hard time to making sync based on async, because callback is called from other thread.
The pattern for that is something like this (Scala/pseudo code):
def getSomething(key: Key): Value = {
val q = new SomeBlockingQueue[Value](1) // Size of 1
val callback = new AsyncCallback {
def onResult(value: Value) {
q.put(value) // Put result on queue
}
}
asyncProcessor.call(key, callback) // Async call, returns immediately
q.take() // Block thread until result is put on queue, then return value
}