Το redis είναι ένα εργαλείο in-memory database το οποίο μπορεί να αποτελέσει αναπόσπαστο κομμάτι σε ένα σύγχρονου web application architecture. Μπορεί να δώσει επιπλέον δυνατότητες καθώς και να βελτιώσει την απόδοση μιας εφαρμογής προσφέροντας ευκολία στην αποθήκευση δομών δεδομένων όπως είναι ένα hashmap.

Εγκαθιστώντας το Redis server μπορούμε να έχουμε άμεσα in-memory data structure server, όπου δίνει τη δυνατότητα γρήγορης αποθήκευσης δομών δεδομένα κατευθείαν στη μνήμη RAM.

Αυτό έχει ως αποτέλεσμα η ανάκτηση δεδομένα να είναι πιο γρήγορη σε αντίθεση με ένα σχεσιακό σύστημα βάσης δεδομένων ή τύπου NoSQL όπου τα δεδομένα αποθηκεύονται στο σκληρό δίσκο.

Η χρήση εργασλείων είναι διαθέσιμα στη χρήση κάθε backend web developer για να βελτιστοποιήσει τις εφαρμογές web. Υπάρχουν πολλές χρήσεις για ένα τέτοιου τύπου datastore, ο πιο συνηθισμένος είναι ο redis cache μηχανισμός για το περιεχόμενο ιστοσελίδων ή db query caching ή ως message broker.

Τι είναι Κey-Value Database

To redis ανήκει στη κατηγορια key-value database αυτό σημαίνει ο τρόπος αποθήκευσης είναι associative arrays με τη διαφορά ότι η αποθήκευση είναι αποκλειστικά στη μνήμη ram και όταν κλείνει τότε αυτά τα δεδομένα αποθηκεύονται στο σκληρό δίσκο.

To redis συγκεκριμένα υποστηρίζει πέντε διαφορετικούς τύπου δεδομένων αλφαριθμητικά (strings), (hashes), λίστες (lists) , σύνολα (sets) και διατεταγμένα σύνολα (zsets), geospatial indexes.

In-memory data stores τα δεδομένα αποθηκεύονται στη μνήμη RAM οπότε δεν χρειάζεται Disk I/O για να ανακτήσετε ή να αποθηκεύσετε δεδομένα όσο είναι up ο server.

Bέβαια οι περιπτώσεις στις οποίες μας χρησιμεύει αυτού του τύπου η αποθήκευση δεδομένων δεν είναι συνηθισμένες και περιλαμβάνει λειτουργίες στις οποίες τα δεδομένα είναι μικρά και ταυτόχρονα δεν είναι critical data.

Μπορείτε να χρησιμοποιήσετε Azure cache for redis ή την Amazon Dynamo που είναι τύπου hosted services που ανήκει στην οικογένεια εφαρμογών της AWS. Εναλλακτικά μπορείτε να την εγκαταστήσετε στο τοπικό υπολογισμό ή τον server σας αν βρίσκεται ακολουθώντας τα παρακάτω βήματα

Τα πρώτα βήματα

ΕΓΚΑΤΑΣΤΑΣΗ

sudo apt-get install redis-server

μας βρίσκει από τα repository της canonical τη τελευταία έκδοση του Redis Server και την εγκαθιστά αμέσως στον υπολογιστής μας

/etc/init.d/redis-server start

ΡΥΘΜΙΣΕΙΣ

/etc/redis/redis.conf

στο παραπάνω αρχείο βρίσκονται οι ρυθμίσεις του redis

ΕΚΚΙΝΗΣΗ, ΠΑΥΣΗ, ΕΠΑΝΕΚΚΙΝΗΣΗ ΤΟΥ REDIS SERVER
η εκκίνηση, παύση, επανεκκίνηση γίνεται με τις παρακάτω εντολές

sudo /etc/init.d/redis-server start

sudo /etc/init.d/redis-server stop

sudo /etc/init.d/redis-server restart

Σύνδεση με redis client

στο τερματικό πληκτρολογούμε την παρακάτω εντολή και συνδεόμαστε

redis-cli

στο τοπικό redis-server βλέποντας redis 127.0.0.1:6379> .ο redis server ουσιαστικά αποθηκεύει σε κλειδιά δομές δεδομένων (data structure) . Ο δομές δεδομένων που μπορείτε να αποθηκεύσετε είναι αλφαριθμητικά Strings (αλφαριθμητικά)

set key 'lorem ipsum'

get key

Lists (λίστες) Οι λίστες είναι απλά είναι είναι μια ομάδα αλφαριθμητικών οι οποίες διατάσσονται με βάση τη σειρά εισαγωγής, μπορούμε να εισάγουμε στοιχεία σε μία λίστα με τη την εντολή lpush τοποθετεί ένα καινούργιο στοιχείο στην αρχή της λίστας όπως για παράδειγμα

Lpush chat "what's up?"

Lpush chat "Nothing Much?"

Για να εμφανίσουμε τα δύο πρώτα στοιχεία της λίστας χρησιμοποιούμε την εντολή lrange χρησιμοποιώντας τους δείκτες 0, 1

Lrange chat 0 1

Επιπλέον δομές δεδομένων που υποστηρίζει το redis server είναι τα σύνολα(sets), διατεταγμένα σύνολα (order sets) και hashes.

Ποιες είναι οι περιπτώσεις χρήσης redis

Μπορεί να χρησιμοποιήθεις δημιουργία ενός σε web application και υπάρχουν πολλά

  • Login Session
  • Shopping cart cookies and abandoned cart recovery
  • Leaderboards and counting
  • Message queues
  • Webpage Caching

Σε γενικές γραμμές σε προβλήματα που προκύπτουν σε web εφαρμογές υψηλής επισκεψιμότας, ένα παράδειγμα είναι στο ecommerce όπου μπορεί να χρησιμοποιηθεί ως Magento ως default cache μηχανισμός

PHP framework με redis

Σχεδόν όλα τα σύγχρονα php frameworks έχουν αναπτύξει wrappers, extensions, plugins όπου μπορεί να διευκολύνουν τη χρήση του redis σε μεγάλο βαθμό. Για παράδειγμα αν κάνετε web development yii framework  αυτό έχει official redis extension.

Επιπλέον τo Laravel δεν έχει native extension αλλά βασίζεται στο predis/predis όπου μπορεί να εγκατασταθεί με το composer και  να γίνει αλληλεπίδραση με το redis server laravel facades αλλά έχει ένα καλό wrapper για να χρήση του μοντέλου publish-subscribe pattern το οποίο διευκολύνει την επικοινωνία με άλλες εφαρμογές και προγραμματιστικές διεργασίας σε Laravel projects

Εκτός από τη περίπτωση να εγκαταστήσετε αυτό το σύστημα στο τοπικός σας Virtual Private Server μπορείτε να χρησιμοποιήσετε cloud όπως είναι τα Amazon Web Services η υπηρεσία Amazon ElastiCache for Redis όπου μπορείτε να έχετε πρόσβαση μέσω web services