SlideShare a Scribd company logo
1 of 54
Download to read offline
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software EngineersĀ© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Redisfor Java Software Engineers
Copyrights Ā© Moshe Kaplan
moshe.kaplan@brightaqua.com
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software EngineersĀ© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Redis
for Java Software Engineers
Moshe Kaplan
Scale Hacker
http://top-performance.blogspot.com
http://blogs.microsoft.co.il/vprnd
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
About Me: Itā€™s all About
3
Scale
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
NOSQL MARKET
Introduction
4
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
When Should I Choose NoSQL?
ā€¢ Eventually Consistent
ā€¢ Document Store
ā€¢ Key Value
5
http://guyharrison.squarespace.com/blog/tag/nosq
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Key Value Store
ā€¢ insert
ā€¢ get
ā€¢ multiget
ā€¢ remove
ā€¢ truncate
6
<Key, Value>
http://wiki.apache.org/cassandra/API
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Redis
ā€¢ Very simple protocol (SMTP like)
ā€¢ Amazing Performance (60Kqps ops on 1 CPU machine)
ā€¢ Persistency to disk
ā€¢ Very little security
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
HELLO. MY NAME IS REDIS
Introduction
8
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
9
#10 Most Popular DB Engine
http://db-engines.com/en/ranking
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Who is Using Redis?
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Who is Behind Redis
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Installation: Give Yourself 5min
ā€¢ sudo apt-get install -y build-essential tcl8.5
ā€¢ wget http://download.redis.io/releases/redis-stable.tar.gz
ā€¢ tar xzf redis-stable.tar.gz
ā€¢ cd redis-stable
ā€¢ make
ā€¢ sudo make install
ā€¢ cd utils
ā€¢ sudo ./install_server.sh
ā€¢ sudo service redis_6379 start
ā€¢ redis-cli
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Redis and Data Models
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Redis Data Models
Data Types What?
Binary-safe strings Strings
Lists Strings List
Sets Unique unsorted strings
Sorted Sets Score field
Hashes O(1)
Bit Arrays/Bitmaps Bit operations on set
HyperLogLogs Estimate set cardinality
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Key Design
ā€¢ Keep keys short
ā€¢ But not too short (readable, existing overhead)
ā€¢ Use Convention:
ā€¢ comment:1234:reply.to
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Sets
simple storage
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Basic Sets
> SET counter 100
OK
> GET counter
(integer) 100
> inc counter
(integer) 101
> incby counter 50
(integer) 151
DECR DECRBY
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Multi Set
> MSET counter 100 cnt2 102 cnt3 103
OK
> MGET counter cnt2 cnt 3
(integer) 100
(integer) 102
(integer) 103
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Existence
> exists counter
(integer) 1
> type counter
integer
> del counter
(integer) 1
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
TTL Keys
> expire counter 5
(integer) 1
> set cnt2 ex 5
OK
> ttl cnt
5
> persist cnt2
OK
Will Expire in 5 secondsWill Expire in 5 seconds
Will Expire in 5 secondsWill Expire in 5 seconds
How much time was left?How much time was left?
Remove TTLRemove TTL
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Linked Lists
a basis for queues
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Existence
> Adding/Removing for end/start: O(1)
> Getting other items: O(N)
LPUSH/RPUSH => Add items (Head/Tail)
LPOP/RPOP => Take items (Head/Tail)
LRANGE/RRANGE => Get items (Head/Tail)
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Blocking Operations
Best for Producer/Consumer (Q)
If list is empty,calls are blocked
> BRPOP <LIST> <# of Seconds>
> BLPOP <LIST> <# of Seconds>
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Capped Lists
Define how many items we want to have
> LPUSH mylist <some element>
> LTRIM mylist 0 999
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Hashes
a column like data store
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Existence
> hmset user:1000 username antirez birthyear 1977
OK
> hget user:1000 username
"antirez"
> hget user:1000 birthyear
"1977"
> hgetall user:1000
1) "username"
2) "antirez"
3) "birthyear"
4) "1977"
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Sets
a basis for social and permissions
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Set Ops
> sismember myset 3
(integer) 1
> sadd news:1000:tags 1 2 5 77
(integer) 4
> sadd tag:1:news 1000
(integer) 1
> sinter news:1000:tags news:2000:tags
,,,,
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Ordered Sets (Z)
A leader board solution
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Set Ops
> zadd hackers 1940 "Alan Kay"
(integer) 1
> zadd hackers 1957 "Sophie Wilson"
(integer 1)
> zrange hackers 0 -1
> zremrangebyscore hackers 1940 1960
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
BitMaps
Efficient Configuration and
Permissions
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Set Ops
> setbit key 10 1
(integer) 1
> getbit key 10
(integer) 1
> bitcount key
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Advanced Operations
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Scan: You can iterate all keys!
Scan
SScan
HScan
ZScan
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Lua Scripting: You have script engine
> eval "return redis.call('set','foo','bar')" 0
OK
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Pub/Sub
Very nice tool, but not as good as Kafka and RabbitMQ
SUBSCRIBE first second
PUBLISH second Hello
UNSUBSCRIBE
PSUBSCRIBE news.*
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Sorting
SORT mylist
SORT mylist DESC
SORT mylist ALPHA
SORT mylist BY weight_*
SORT mylist BY nosort
SORT mylist BY weight_* GET object_*
SORT mylist BY weight_* GET object_* GET #
SORT mylist BY weight_* STORE resultkey
SORT mylist BY weight_*->fieldname GET object_*->fieldname
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Transactions
1. Atomic
2. Blocking all other operations
3. All or Nothing
MULTI: Start transaction
EXEC: Commit
DISCARD: ā€œRoll backā€ (only before EXEC, nothing done)
WATCH: Donā€™t use in multi client (race conditions)
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Transaction by Example
> MULTI
OK
> INCR foo
QUEUED
> INCR bar
QUEUED
> EXEC
1) (integer) 1
2) (integer) 1
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Java Programming
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Many Options
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Securing Redis
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Authentication
ā€¢ By default: None
ā€¢ Enable: requirepass in the config file
ā€¢ Authenticate: AUTH <PASSWORD>
ā€¢ Simple, Clear text
ā€¢ No measures to prevent brute force
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Communication Encryption
ā€¢ SSL Communication encryption using stunnel/spiped
ā€¢ Webdis web front layer
ā€¢ Encrypt the data in the app level
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Persistency
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
The Good, bad and Evil
ā€¢ RDB
ā€¢ Point in time snapshots
ā€¢ Backup before critical operation
ā€¢ AOF
ā€¢ On every write to log (or once a seocnd)
ā€¢ Log rerun at startup
ā€¢ None
ā€¢ In memory only solution
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
CACHING
47
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Donā€™t Use Caching
48
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
If You Have To
49
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Invalidation Can Be Nightmare
50
http://luauf.com/2009/06/08/%C2%BFque-es-memcac
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Geo Load Balancing Can be Worse
51
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Finally, Recovery May Not Be Better
52
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
KISS
53
http://marriagelifeministries.org/?p=962
Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software EngineersĀ© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers
Thank You !
Moshe Kaplan
moshe.kaplan@brightaqua.com
054-2291978

More Related Content

What's hot

Postgresql 9.0 HA at LOADAYS 2012
Postgresql 9.0 HA at LOADAYS 2012Postgresql 9.0 HA at LOADAYS 2012
Postgresql 9.0 HA at LOADAYS 2012
Julien Pivotto
Ā 
Solve the Cross-Cloud Conundrum with jclouds at Gluecon 2013
Solve the Cross-Cloud Conundrum with jclouds at Gluecon 2013Solve the Cross-Cloud Conundrum with jclouds at Gluecon 2013
Solve the Cross-Cloud Conundrum with jclouds at Gluecon 2013
Everett Toews
Ā 

What's hot (15)

Postgresql 9.0 HA at LOADAYS 2012
Postgresql 9.0 HA at LOADAYS 2012Postgresql 9.0 HA at LOADAYS 2012
Postgresql 9.0 HA at LOADAYS 2012
Ā 
wolfSSL Performance Improvements 2018
wolfSSL Performance Improvements 2018wolfSSL Performance Improvements 2018
wolfSSL Performance Improvements 2018
Ā 
The Future of Adhearson
The Future of AdhearsonThe Future of Adhearson
The Future of Adhearson
Ā 
Paris Container Day 2016 : Etcd - overview and future (CoreOS)
Paris Container Day 2016 : Etcd - overview and future (CoreOS)Paris Container Day 2016 : Etcd - overview and future (CoreOS)
Paris Container Day 2016 : Etcd - overview and future (CoreOS)
Ā 
Introducing Project Longhorn - April 2016 Rancher Online Meetup
Introducing Project Longhorn - April 2016 Rancher Online MeetupIntroducing Project Longhorn - April 2016 Rancher Online Meetup
Introducing Project Longhorn - April 2016 Rancher Online Meetup
Ā 
DSR Microservices (Day 1, Part 1)
DSR Microservices (Day 1, Part 1)DSR Microservices (Day 1, Part 1)
DSR Microservices (Day 1, Part 1)
Ā 
Hadoop Summit 2013 : Continuous Integration on top of hadoop
Hadoop Summit 2013 : Continuous Integration on top of hadoopHadoop Summit 2013 : Continuous Integration on top of hadoop
Hadoop Summit 2013 : Continuous Integration on top of hadoop
Ā 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
Ā 
Code Reviews vs. Pull Requests
Code Reviews vs. Pull RequestsCode Reviews vs. Pull Requests
Code Reviews vs. Pull Requests
Ā 
Solve the Cross-Cloud Conundrum with jclouds at Gluecon 2013
Solve the Cross-Cloud Conundrum with jclouds at Gluecon 2013Solve the Cross-Cloud Conundrum with jclouds at Gluecon 2013
Solve the Cross-Cloud Conundrum with jclouds at Gluecon 2013
Ā 
[124] mit cheetah į„…į…©į„‡į…©į†ŗį„‹į…“ į„į…”į†«į„‰į…¢į†¼
[124] mit cheetah į„…į…©į„‡į…©į†ŗį„‹į…“ į„į…”į†«į„‰į…¢į†¼[124] mit cheetah į„…į…©į„‡į…©į†ŗį„‹į…“ į„į…”į†«į„‰į…¢į†¼
[124] mit cheetah į„…į…©į„‡į…©į†ŗį„‹į…“ į„į…”į†«į„‰į…¢į†¼
Ā 
Refactoring to Java 8 (QCon New York)
Refactoring to Java 8 (QCon New York)Refactoring to Java 8 (QCon New York)
Refactoring to Java 8 (QCon New York)
Ā 
Blazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java UniverseBlazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java Universe
Ā 
Immutable infrastructureļ¼šč§€åæµčˆ‡åƦ作 (å»ŗč­°)
Immutable infrastructureļ¼šč§€åæµčˆ‡åƦ作 (å»ŗč­°)Immutable infrastructureļ¼šč§€åæµčˆ‡åƦ作 (å»ŗč­°)
Immutable infrastructureļ¼šč§€åæµčˆ‡åƦ作 (å»ŗč­°)
Ā 
SaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStack
SaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStackSaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStack
SaltConf14 - Oz Akan, Rackspace - Deploying OpenStack Marconi with SaltStack
Ā 

Viewers also liked

Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best Practices
Theo Jungeblut
Ā 

Viewers also liked (12)

Clean Code: Chapter 3 Function
Clean Code: Chapter 3 FunctionClean Code: Chapter 3 Function
Clean Code: Chapter 3 Function
Ā 
Clean Code - How to write comprehensible code regarding cognitive abilities o...
Clean Code - How to write comprehensible code regarding cognitive abilities o...Clean Code - How to write comprehensible code regarding cognitive abilities o...
Clean Code - How to write comprehensible code regarding cognitive abilities o...
Ā 
Empathic Programming - How to write comprehensible code
Empathic Programming - How to write comprehensible codeEmpathic Programming - How to write comprehensible code
Empathic Programming - How to write comprehensible code
Ā 
Writing beautiful code with Java 8
Writing beautiful code with Java 8Writing beautiful code with Java 8
Writing beautiful code with Java 8
Ā 
Clean Code Development
Clean Code DevelopmentClean Code Development
Clean Code Development
Ā 
Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)
Ā 
Clean Code
Clean CodeClean Code
Clean Code
Ā 
OOP Basics
OOP BasicsOOP Basics
OOP Basics
Ā 
Java data structures powered by Redis. Introduction to Redisson @ Redis Light...
Java data structures powered by Redis. Introduction to Redisson @ Redis Light...Java data structures powered by Redis. Introduction to Redisson @ Redis Light...
Java data structures powered by Redis. Introduction to Redisson @ Redis Light...
Ā 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best Practices
Ā 
Clean code
Clean codeClean code
Clean code
Ā 
Clean coding-practices
Clean coding-practicesClean coding-practices
Clean coding-practices
Ā 

Similar to Redis training for java software engineers

6Ā° Sessione Oracle - CRUI: Oracle Database Appliance: Il potere dellā€™ingegner...
6Ā° Sessione Oracle - CRUI: Oracle Database Appliance:Il potere dellā€™ingegner...6Ā° Sessione Oracle - CRUI: Oracle Database Appliance:Il potere dellā€™ingegner...
6Ā° Sessione Oracle - CRUI: Oracle Database Appliance: Il potere dellā€™ingegner...
JĆ¼rgen Ambrosi
Ā 

Similar to Redis training for java software engineers (20)

MongoDB training for java software engineers
MongoDB training for java software engineersMongoDB training for java software engineers
MongoDB training for java software engineers
Ā 
MongoDB from Basics to Scale
MongoDB from Basics to ScaleMongoDB from Basics to Scale
MongoDB from Basics to Scale
Ā 
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]
Full Speed Ahead! (Ahead-of-Time Compilation for Java SE) [JavaOne 2017 CON3738]
Ā 
20190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev220190615 hkos-mysql-troubleshootingandperformancev2
20190615 hkos-mysql-troubleshootingandperformancev2
Ā 
Understanding the impact of Linux scheduler on your application
Understanding the impact of Linux scheduler on your applicationUnderstanding the impact of Linux scheduler on your application
Understanding the impact of Linux scheduler on your application
Ā 
Streaming solutions for real time problems
Streaming solutions for real time problems Streaming solutions for real time problems
Streaming solutions for real time problems
Ā 
MongoDB Best Practices for Developers
MongoDB Best Practices for DevelopersMongoDB Best Practices for Developers
MongoDB Best Practices for Developers
Ā 
Cloud Native Java:GraalVM
Cloud Native Java:GraalVMCloud Native Java:GraalVM
Cloud Native Java:GraalVM
Ā 
Cloud Native ģžė°” ķ”Œėž«ķ¼: Graalvm Overview
Cloud Native ģžė°” ķ”Œėž«ķ¼: Graalvm OverviewCloud Native ģžė°” ķ”Œėž«ķ¼: Graalvm Overview
Cloud Native ģžė°” ķ”Œėž«ķ¼: Graalvm Overview
Ā 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
Ā 
Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...
Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...
Everything You Wanted to Know About JIT Compilation but Were Afraid to Ask [J...
Ā 
IIMB presentation
IIMB presentationIIMB presentation
IIMB presentation
Ā 
6 Tips to MySQL Performance Tuning
6 Tips to MySQL Performance Tuning6 Tips to MySQL Performance Tuning
6 Tips to MySQL Performance Tuning
Ā 
Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl
Ā 
Getting Started with JDK Mission Control
Getting Started with JDK Mission ControlGetting Started with JDK Mission Control
Getting Started with JDK Mission Control
Ā 
1 Million Writes per second on 60 nodes with Cassandra and EBS
1 Million Writes per second on 60 nodes with Cassandra and EBS1 Million Writes per second on 60 nodes with Cassandra and EBS
1 Million Writes per second on 60 nodes with Cassandra and EBS
Ā 
Install Redis on Oracle Linux
Install Redis on Oracle LinuxInstall Redis on Oracle Linux
Install Redis on Oracle Linux
Ā 
Ongoing management of your PHP 7 application
Ongoing management of your PHP 7 applicationOngoing management of your PHP 7 application
Ongoing management of your PHP 7 application
Ā 
Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?Is An Agile Standard Possible For Java?
Is An Agile Standard Possible For Java?
Ā 
6Ā° Sessione Oracle - CRUI: Oracle Database Appliance: Il potere dellā€™ingegner...
6Ā° Sessione Oracle - CRUI: Oracle Database Appliance:Il potere dellā€™ingegner...6Ā° Sessione Oracle - CRUI: Oracle Database Appliance:Il potere dellā€™ingegner...
6Ā° Sessione Oracle - CRUI: Oracle Database Appliance: Il potere dellā€™ingegner...
Ā 

More from Moshe Kaplan

Web systems architecture, Performance and More
Web systems architecture, Performance and MoreWeb systems architecture, Performance and More
Web systems architecture, Performance and More
Moshe Kaplan
Ā 
mongoDB Performance
mongoDB PerformancemongoDB Performance
mongoDB Performance
Moshe Kaplan
Ā 

More from Moshe Kaplan (20)

Spark and C Integration
Spark and C IntegrationSpark and C Integration
Spark and C Integration
Ā 
Introduction to Big Data
Introduction to Big DataIntroduction to Big Data
Introduction to Big Data
Ā 
Introduciton to Python
Introduciton to PythonIntroduciton to Python
Introduciton to Python
Ā 
Creating Big Data: Methodology
Creating Big Data: MethodologyCreating Big Data: Methodology
Creating Big Data: Methodology
Ā 
The api economy
The api economyThe api economy
The api economy
Ā 
Big Data Workshop
Big Data WorkshopBig Data Workshop
Big Data Workshop
Ā 
Scale and Cloud Design Patterns
Scale and Cloud Design PatternsScale and Cloud Design Patterns
Scale and Cloud Design Patterns
Ā 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
Ā 
Web systems architecture, Performance and More
Web systems architecture, Performance and MoreWeb systems architecture, Performance and More
Web systems architecture, Performance and More
Ā 
Do Big Data and NoSQL Fit Your Needs?
Do Big Data and NoSQL Fit Your Needs?Do Big Data and NoSQL Fit Your Needs?
Do Big Data and NoSQL Fit Your Needs?
Ā 
The VP R&D Open Seminar on Project Management, SCRUM, Agile and Continuous De...
The VP R&D Open Seminar on Project Management, SCRUM, Agile and Continuous De...The VP R&D Open Seminar on Project Management, SCRUM, Agile and Continuous De...
The VP R&D Open Seminar on Project Management, SCRUM, Agile and Continuous De...
Ā 
MySQL Multi Master Replication
MySQL Multi Master ReplicationMySQL Multi Master Replication
MySQL Multi Master Replication
Ā 
mongoDB Performance
mongoDB PerformancemongoDB Performance
mongoDB Performance
Ā 
Web Systems Architecture by Moshe Kaplan
Web Systems Architecture by Moshe KaplanWeb Systems Architecture by Moshe Kaplan
Web Systems Architecture by Moshe Kaplan
Ā 
Big Data Seminar: Analytics, Hadoop, Map Reduce, Mongo and other great stuff
Big Data Seminar: Analytics, Hadoop, Map Reduce, Mongo and other great stuffBig Data Seminar: Analytics, Hadoop, Map Reduce, Mongo and other great stuff
Big Data Seminar: Analytics, Hadoop, Map Reduce, Mongo and other great stuff
Ā 
MySQL crash course by moshe kaplan
MySQL crash course by moshe kaplanMySQL crash course by moshe kaplan
MySQL crash course by moshe kaplan
Ā 
VP R&D Open Seminar: Caching
VP R&D Open Seminar: CachingVP R&D Open Seminar: Caching
VP R&D Open Seminar: Caching
Ā 
Expert Days: The VP R&D Open Seminar: Project Management
Expert Days: The VP R&D Open Seminar: Project ManagementExpert Days: The VP R&D Open Seminar: Project Management
Expert Days: The VP R&D Open Seminar: Project Management
Ā 
Expert Days 2011: The VP R&D Open Seminar: Systems Performance Seminar
Expert Days 2011: The VP R&D Open Seminar: Systems Performance Seminar Expert Days 2011: The VP R&D Open Seminar: Systems Performance Seminar
Expert Days 2011: The VP R&D Open Seminar: Systems Performance Seminar
Ā 
Database2011 MySQL Sharding
Database2011 MySQL ShardingDatabase2011 MySQL Sharding
Database2011 MySQL Sharding
Ā 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
Ā 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(ā˜Žļø+971_581248768%)**%*]'#abortion pills for sale in dubai@
Ā 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
Ā 

Recently uploaded (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Ā 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Ā 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
Ā 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Ā 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Ā 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Ā 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Ā 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Ā 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Ā 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Ā 
Scaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organizationScaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organization
Ā 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Ā 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Ā 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Ā 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Ā 

Redis training for java software engineers

  • 1. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software EngineersĀ© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Redisfor Java Software Engineers Copyrights Ā© Moshe Kaplan moshe.kaplan@brightaqua.com
  • 2. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software EngineersĀ© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Redis for Java Software Engineers Moshe Kaplan Scale Hacker http://top-performance.blogspot.com http://blogs.microsoft.co.il/vprnd
  • 3. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers About Me: Itā€™s all About 3 Scale
  • 4. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers NOSQL MARKET Introduction 4
  • 5. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers When Should I Choose NoSQL? ā€¢ Eventually Consistent ā€¢ Document Store ā€¢ Key Value 5 http://guyharrison.squarespace.com/blog/tag/nosq
  • 6. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Key Value Store ā€¢ insert ā€¢ get ā€¢ multiget ā€¢ remove ā€¢ truncate 6 <Key, Value> http://wiki.apache.org/cassandra/API
  • 7. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Redis ā€¢ Very simple protocol (SMTP like) ā€¢ Amazing Performance (60Kqps ops on 1 CPU machine) ā€¢ Persistency to disk ā€¢ Very little security
  • 8. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers HELLO. MY NAME IS REDIS Introduction 8
  • 9. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers 9 #10 Most Popular DB Engine http://db-engines.com/en/ranking
  • 10. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Who is Using Redis?
  • 11. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Who is Behind Redis
  • 12. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Installation: Give Yourself 5min ā€¢ sudo apt-get install -y build-essential tcl8.5 ā€¢ wget http://download.redis.io/releases/redis-stable.tar.gz ā€¢ tar xzf redis-stable.tar.gz ā€¢ cd redis-stable ā€¢ make ā€¢ sudo make install ā€¢ cd utils ā€¢ sudo ./install_server.sh ā€¢ sudo service redis_6379 start ā€¢ redis-cli
  • 13. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Redis and Data Models
  • 14. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Redis Data Models Data Types What? Binary-safe strings Strings Lists Strings List Sets Unique unsorted strings Sorted Sets Score field Hashes O(1) Bit Arrays/Bitmaps Bit operations on set HyperLogLogs Estimate set cardinality
  • 15. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Key Design ā€¢ Keep keys short ā€¢ But not too short (readable, existing overhead) ā€¢ Use Convention: ā€¢ comment:1234:reply.to
  • 16. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Sets simple storage
  • 17. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Basic Sets > SET counter 100 OK > GET counter (integer) 100 > inc counter (integer) 101 > incby counter 50 (integer) 151 DECR DECRBY
  • 18. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Multi Set > MSET counter 100 cnt2 102 cnt3 103 OK > MGET counter cnt2 cnt 3 (integer) 100 (integer) 102 (integer) 103
  • 19. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Existence > exists counter (integer) 1 > type counter integer > del counter (integer) 1
  • 20. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers TTL Keys > expire counter 5 (integer) 1 > set cnt2 ex 5 OK > ttl cnt 5 > persist cnt2 OK Will Expire in 5 secondsWill Expire in 5 seconds Will Expire in 5 secondsWill Expire in 5 seconds How much time was left?How much time was left? Remove TTLRemove TTL
  • 21. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Linked Lists a basis for queues
  • 22. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Existence > Adding/Removing for end/start: O(1) > Getting other items: O(N) LPUSH/RPUSH => Add items (Head/Tail) LPOP/RPOP => Take items (Head/Tail) LRANGE/RRANGE => Get items (Head/Tail)
  • 23. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Blocking Operations Best for Producer/Consumer (Q) If list is empty,calls are blocked > BRPOP <LIST> <# of Seconds> > BLPOP <LIST> <# of Seconds>
  • 24. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Capped Lists Define how many items we want to have > LPUSH mylist <some element> > LTRIM mylist 0 999
  • 25. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Hashes a column like data store
  • 26. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Existence > hmset user:1000 username antirez birthyear 1977 OK > hget user:1000 username "antirez" > hget user:1000 birthyear "1977" > hgetall user:1000 1) "username" 2) "antirez" 3) "birthyear" 4) "1977"
  • 27. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Sets a basis for social and permissions
  • 28. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Set Ops > sismember myset 3 (integer) 1 > sadd news:1000:tags 1 2 5 77 (integer) 4 > sadd tag:1:news 1000 (integer) 1 > sinter news:1000:tags news:2000:tags ,,,,
  • 29. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Ordered Sets (Z) A leader board solution
  • 30. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Set Ops > zadd hackers 1940 "Alan Kay" (integer) 1 > zadd hackers 1957 "Sophie Wilson" (integer 1) > zrange hackers 0 -1 > zremrangebyscore hackers 1940 1960
  • 31. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers BitMaps Efficient Configuration and Permissions
  • 32. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Set Ops > setbit key 10 1 (integer) 1 > getbit key 10 (integer) 1 > bitcount key
  • 33. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Advanced Operations
  • 34. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Scan: You can iterate all keys! Scan SScan HScan ZScan
  • 35. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Lua Scripting: You have script engine > eval "return redis.call('set','foo','bar')" 0 OK
  • 36. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Pub/Sub Very nice tool, but not as good as Kafka and RabbitMQ SUBSCRIBE first second PUBLISH second Hello UNSUBSCRIBE PSUBSCRIBE news.*
  • 37. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Sorting SORT mylist SORT mylist DESC SORT mylist ALPHA SORT mylist BY weight_* SORT mylist BY nosort SORT mylist BY weight_* GET object_* SORT mylist BY weight_* GET object_* GET # SORT mylist BY weight_* STORE resultkey SORT mylist BY weight_*->fieldname GET object_*->fieldname
  • 38. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Transactions 1. Atomic 2. Blocking all other operations 3. All or Nothing MULTI: Start transaction EXEC: Commit DISCARD: ā€œRoll backā€ (only before EXEC, nothing done) WATCH: Donā€™t use in multi client (race conditions)
  • 39. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Transaction by Example > MULTI OK > INCR foo QUEUED > INCR bar QUEUED > EXEC 1) (integer) 1 2) (integer) 1
  • 40. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Java Programming
  • 41. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Many Options
  • 42. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Securing Redis
  • 43. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Authentication ā€¢ By default: None ā€¢ Enable: requirepass in the config file ā€¢ Authenticate: AUTH <PASSWORD> ā€¢ Simple, Clear text ā€¢ No measures to prevent brute force
  • 44. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Communication Encryption ā€¢ SSL Communication encryption using stunnel/spiped ā€¢ Webdis web front layer ā€¢ Encrypt the data in the app level
  • 45. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Persistency
  • 46. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers The Good, bad and Evil ā€¢ RDB ā€¢ Point in time snapshots ā€¢ Backup before critical operation ā€¢ AOF ā€¢ On every write to log (or once a seocnd) ā€¢ Log rerun at startup ā€¢ None ā€¢ In memory only solution
  • 47. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers CACHING 47
  • 48. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Donā€™t Use Caching 48
  • 49. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers If You Have To 49
  • 50. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Invalidation Can Be Nightmare 50 http://luauf.com/2009/06/08/%C2%BFque-es-memcac
  • 51. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Geo Load Balancing Can be Worse 51
  • 52. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Finally, Recovery May Not Be Better 52
  • 53. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers KISS 53 http://marriagelifeministries.org/?p=962
  • 54. Ā© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software EngineersĀ© All rights reserved: Moshe KaplanĀ© All rights reserved: Moshe Kaplan Redis for Java Software Engineers Thank You ! Moshe Kaplan moshe.kaplan@brightaqua.com 054-2291978