Όσο πιο πολύπλοκες γίνονται οι εφαρμογές web και mobile τόσο σε λειτουργίες αλλά και με τη αύξηση της βάσης χρηστών, τα εργαλεία που χρειάζονται για να συνεχιστούν ομαλά  οι λειτουργίες είναι πιο σύνθετα και  ένα τέτοιο εργαλείο είναι και το redis.

Τι είναι Redis; 

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

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

Έιναι πολλές χρήσεις για ένα τέτοιου τύπου datastore που μπορεί να χρησιμοποιηθεί ανεξάρτητα και στα πλαίσια ενα web framework. Τα πιο συνηθησμένα εργαλεία είναι

  1. Διαχείριση των Session Management
  2. Μηχανισμός Caching αντί του Memcached
  3. Message Broker δηλαδή Message Queues
  4. Geospatial Data

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

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

Ποιοι είναι οι τύποι δεδομένων Redis Data-Types που υποστήριζονται απο το Redis

  • αλφαριθμητικά (strings),
  • Hashes αποθήκευση map από key-values  αλφαρηθμιτικών,
  • Λίστες - Lists συγκεκριμένα linked lists αλφαρηθμιτικών
  • Σύνολα - Sets συλλογές απο μη διατεταγμένα στοιχεία αλφαρηθμιτικών
  • Διατεταγμένα σύνολα - Sorted sets,
  • Streams
  • Γεωχωρικους Δείκτες - Geospatial Data
  • Bitmaps και Hyperloglogs

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 και cooking caching
  • Ως μέρος του δημιουργία eshop στο Cart όπου είναι απλό Hash map ενός προϊόντος με τη ποσότητα
  • Leaderboards and counting
  • Message queues
  • Database row caching
  • Webpage Caching

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

PHP framework με redis

Σχεδόν όλα τα σύγχρονα php frameworks έχουν αναπτύξει wrappers, extensions, plugins όπου μπορεί να διευκολύνουν τη χρήση του redis σε μεγάλο βαθμό. Για παράδειγμα αν κάνετε yii web development  αυτό έχει 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