mirror of
https://github.com/clearlinux/clear-linux-documentation.git
synced 2026-08-24 00:15:57 +00:00
Adds redis tutorial with systemctl service check, 2 example use cases (#525)
* Adds redis tutorial with systemctl service check; add 2 example use cases. - Closes #519 Signed-off-by: Michael Vincerra <michael.vincerra@intel.com> Refine intro and add development examples. Signed-off-by: Michael Vincerra <michael.vincerra@intel.com> Revise wording intro; add hyperlinks in Example 2. Signed-off-by: Michael Vincerra <michael.vincerra@intel.com> Correct description of client libraries. Signed-off-by: Michael Vincerra <michael.vincerra@intel.com> Correct spacing; add note to define syntax behavior. Signed-off-by: Michael Vincerra <michael.vincerra@intel.com> Respond to reviewer's feedback. Revise wording. Add docker command. Signed-off-by: Michael Vincerra <michael.vincerra@intel.com> Apply wording revisions for clarity. Signed-off-by: Michael Vincerra <michael.vincerra@intel.com> Edit for squash. Signed-off-by: Michael Vincerra <michael.vincerra@intel.com> * Resolve build error to avoid duplicate ref's. Signed-off-by: Michael Vincerra <michael.vincerra@intel.com>
This commit is contained in:
@@ -0,0 +1,215 @@
|
||||
.. _redis:
|
||||
|
||||
Run Redis on |CL-ATTR|
|
||||
######################
|
||||
|
||||
Redis is an in-memory key:value store designed for quick lookups, accessible
|
||||
over the network. In this tutorial, you'll install redis and launch a
|
||||
redis-server on |CL|, plus learn a few basic redis commands. We also invite
|
||||
you to pull our `Clear Linux Redis instance`_ on dockerhub\* for application
|
||||
or infrastructure development.
|
||||
|
||||
While the `redis data structure store`_ can serve as a NoSQL database for a Web application, it's also easy to integrate in an existing stack. For example, you could use the Redis caching layer for real-time responses on a leaderboard in a gaming app. Redis offers many client libraries with language-specific bindings for Python, Perl, Ruby, and more.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
Prerequisites
|
||||
*************
|
||||
* Install the `redis-native` bundle in |CL|
|
||||
* Install the `containers-basic` bundle in |CL| (only required in Example 2)
|
||||
|
||||
Install the redis bundle
|
||||
************************
|
||||
|
||||
In |CL|, find redis in the `redis-native` bundle.
|
||||
|
||||
#. Open a Terminal and login as an administrative user.
|
||||
|
||||
#. Add :file:`redis-native`.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo swupd bundle-add redis-native
|
||||
|
||||
.. note::
|
||||
|
||||
If the bundle already exists, no action is required.
|
||||
|
||||
Start the redis-server
|
||||
**********************
|
||||
|
||||
A `systemd` service unit is available to control the redis server.
|
||||
By default, redis runs on port 6379.
|
||||
|
||||
#. Start the service.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
systemctl start redis
|
||||
|
||||
.. note::
|
||||
|
||||
To stop redis run :command:`systemctl stop redis`.
|
||||
|
||||
#. Assure the service is running.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
systemctl status redis
|
||||
|
||||
#. Verify the redis-server sends a reply.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
redis-cli ping
|
||||
|
||||
.. note::
|
||||
|
||||
Expected output: `PONG`.
|
||||
|
||||
#. Optional: If you wish to apply advanced configuration, copy the
|
||||
`redis.conf` into /etc/ directory.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo cp /usr/share/defaults/etc/redis.conf /etc/
|
||||
|
||||
The redis-server is now ready to use on |CL|. Try some examples below.
|
||||
|
||||
Example 1: Use the redis-cli and try commands
|
||||
*********************************************
|
||||
|
||||
One advantage of redis over other NoSQL databases is that developers can
|
||||
easily access data structures like lists, sets, sorted sets, strings, and
|
||||
hashes using collection operations commands similar to those found in many
|
||||
programming languages. These exercises are inspired by `try redis io`_.
|
||||
|
||||
After your `redis-server` is running, try some basic commands.
|
||||
|
||||
#. Enter the `redis-cli`. It provides syntax suggestions as you type.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
redis-cli
|
||||
|
||||
#. SET key to hold string value. In the set create connections and increment.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
SET server:name "clearlinux"
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
MGET server:name
|
||||
|
||||
.. note::
|
||||
If the key does not exist or hold a key value, `nil` is returned.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
SET connections 100
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
INCR connections
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
INCR connections
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
DEL connections
|
||||
|
||||
#. Create a `friends` list and insert new values at the end of the list.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
RPUSH friends "Deb"
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
RPUSH friends "David"
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
RPUSH friends "Mary"
|
||||
|
||||
#. Modify `friends` list, using a common slice method with a 0-index.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
LRANGE friends 0 1
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
LLEN friends
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
LPOP friends
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
RPOP friends
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
LLEN friends
|
||||
|
||||
#. Consider using a hash, a very useful data type, which maps string fields
|
||||
and string values, offering multiple lookup methods.
|
||||
|
||||
Enter many user key:values with `HMSET`. Then try `HGET` and `HGETALL`.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
HMSET user:1000 name "Robert Noyce" password "SuperEngi9eer" email "robert.noyce@intel.com"
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
HGET user:1000 name
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
HGET user:1000 email
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
HGETALL user:1000
|
||||
|
||||
|
||||
Example 2: Run the |CL| redis docker image
|
||||
******************************************
|
||||
|
||||
We also provide a `Clear Linux Redis instance`_, which is
|
||||
updated continuously and maintained by |CL| development.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo swupd bundle-add containers-basic
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo systemctl start docker
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
sudo -E docker pull clearlinux/redis
|
||||
|
||||
Next Steps
|
||||
**********
|
||||
|
||||
* Follow the `redis quickstart tutorial`_ to expand potential uses.
|
||||
|
||||
* Learn to :ref:`docker`.
|
||||
|
||||
.. _try redis io: https://try.redis.io/
|
||||
|
||||
.. _Clear Linux Redis instance: https://hub.docker.com/r/clearlinux/redis
|
||||
|
||||
.. _redis data structure store: https://redis.io/
|
||||
|
||||
.. _redis quickstart tutorial: https://redis.io/topics/quickstart
|
||||
@@ -27,3 +27,4 @@ Explore our tutorials to discover what you can do with |CL|!
|
||||
yubikey-u2f
|
||||
nvidia
|
||||
dars
|
||||
redis
|
||||
|
||||
Reference in New Issue
Block a user