[ 
https://issues.apache.org/jira/browse/GEODE-7828?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17050622#comment-17050622
 ] 

ASF subversion and git services commented on GEODE-7828:
--------------------------------------------------------

Commit 2f6bf013368df5a4b5efe68162a4953f9a88bbf2 in geode's branch 
refs/heads/develop from Jens Deppe
[ https://gitbox.apache.org/repos/asf?p=geode.git;h=2f6bf01 ]

GEODE-7828: Convert backing store for Redis Hashes and Sets to single regions 
(#4745)

* GEODE-7828: Convert backing store for Redis Hashes and Sets to single regions

This PR builds on the work originally submitted by Greg Green in
https://github.com/apache/geode/pull/404. Also acknowledgements to Galen
O'Sullivan for addressing locking issues in that PR.

This commit changes the storage model of Redis hashes and sets from one
region per each Redis key to a single hash region and single set region.
The Redis key is now also the region key and the data is stored in a Map
and Set respectively in the region. Currently, the backing values do not
implement Delta changes, however this will be a future optimization.

This also fixes the inability of Redis keys to contain other characters
commonly used, such as colons (':').

- Add `RedisLockService` which manages a lock per key within a single
  JVM. Locks are held in a WeakHasMap to allow for automatic cleanup
  (prior PR work, using a pure ConcurrentHashMap, ended up leaking
  memory since there is no straight-forward way to clean up unused
  keys/locks).
- Add new tests including concurrency tests for hashes and sets

Co-authored-by: Greg Green <ggr...@pivotal.io>
Co-authored-by: Ray Ingles <ring...@pivotal.io>
Co-authored-by: Sarah Abbey <sab...@pivotal.io>
Co-authored-by: John Hutchison <jhutchi...@pivotal.io>
Co-authored-by: Murtuza Boxwala <mboxw...@pivotal.io>
Co-authored-by: Prasath Durairaj <prasa...@pivotal.io>
Co-authored-by: Jens Deppe <jde...@pivotal.io>


> Convert backing store for Redis Hashes and Sets to single regions
> -----------------------------------------------------------------
>
>                 Key: GEODE-7828
>                 URL: https://issues.apache.org/jira/browse/GEODE-7828
>             Project: Geode
>          Issue Type: Improvement
>          Components: redis
>            Reporter: Jens Deppe
>            Assignee: Jens Deppe
>            Priority: Major
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> Currently the Redis adapter creates separate regions for each new hash or 
> set. This can be a significant performance impact when many hashes are being 
> created. In addition, hashes are conventionally often named with colons (':') 
> in their name - for example {{user:1000}}. This does not work as region names 
> cannot contain colons.
> The work here will create a single region for hashes and a single region for 
> sets.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to