Table of Contents
Part 1: Introduction and Functional SpecsPart 2: Redis setup
Part 3: Java classes
Part 4: XML configuration
Part 5: HTML (with AJAX)
Part 6: Running the Application
Dependencies
- Spring core 3.1.0.RELEASE
- Spring Data Redis 1.0.0.RC1
- Redis (server) 2.4.7
- See pom.xml for details
Github
To access the source code, please visit the project's Github repository (click here)
Functional Specs
Before we start, let's define our application's specs as follows:- A CRUD page for managing users
- Use AJAX to avoid page refresh
- Users have roles: either admin or regular (default)
- Everyone can create new users and edit existing ones
- When editing, users can only edit first name, last name, and role fields
- A username is assumed to be unique
Here's our Use Case diagram:
Database
If you're new to Redis and coming from a SQL-background, please take some time to read the Redis Official Documentation. I would like to put emphasis on studying the Redis data types. See Data types and A fifteen minute introduction to Redis data types.In its purest form, Redis is a key-value store that can support various data structures: Strings, Sets, Lists, Hashes, and Sorted Sets. Among these structures, we will pay extra attention to Hashes because we can use it to represent Java objects.
Hashes
Redis Hashes are maps between string fields and string values, so they are the perfect data type to represent objects (eg: A User with a number of fields like name, surname, age, and so forth):
Source: Data types
From Java to Redis
We have two Java classes representing our domain: User and Role. Here is the Class diagram:However, Redis is a key-value store, and we can already see the model mismatch. How do we exactly map a Java class to a Redis structure? One of way of dealing with this is to use Hash structure.
Assume we have the following User object with the following properties:
User ---- id = 1 username = john password = 12345678 role = 1
To map this object to Redis, via the command-line tool, as a Hash structure we use the command HMSET:
redis> HMSET user:1 id 1 username john password 12345678 role 1 "OK" redis> HGETALL user:1 {"id":"1","username":"john","password":"12345678","role":"1"}
In this example, user:1 becomes the column name and the id (if we think of this in terms of a relational database). Notice we don't have to map a Role object because we've already set the value along with the user key.
Try Redis
If you need to experiment with an actual Redis instance online, visit the Try Redis.Screenshots
Let's preview how the application will look like after it's finished. This is also a good way to clarify further the application's specs. Note: These are the same screenshots you will see from the Spring MVC 3.1 - Implement CRUD with Spring Data MongoDB guide.The Activity diagram:
Entry page
The entry page is the primary page that users will see. It contains a table showing user records and four buttons for adding, editing, deleting, and reloading data. All interactions will happen in this page.
Edit existing record
When user clicks the Edit button, an Edit Record form shall appear after the table.
When a user submits the form, a success or failure alert should appear.
When the operation is successful, the update record should reflect on the table.
Create new record
When a user clicks the New button, a Create New Record form shall appear after the table.
When a user submits the form, a success or failure alert should appear.
When the operation is successful, the new record should appear on the table.
Delete record
When user clicks the Delete button, a success or failure alert should appear.
Reload record
When user clicks the Reload button, the data on the table should be reloaded.
Errors
When user clicks the Edit or Delete button without selecting a record first, a "Select a record first!" alert should appear.
Next
In the next section, we will study how to setup a Redis server both in Windows and Ubuntu. Click here to proceed.
Share the joy:
|
Subscribe by reader Subscribe by email Share