Redis 6: Pangkalan data, cache, dan broker mesej berkelajuan tinggi

Seperti banyak, anda mungkin menganggap Redis hanya sebagai cache. Pandangan itu sudah ketinggalan zaman.

Pada dasarnya, Redis adalah penyimpanan struktur data dalam memori NoSQL yang boleh bertahan dalam cakera. Ia dapat berfungsi sebagai pangkalan data, cache, dan broker mesej. Redis mempunyai replikasi bawaan, skrip Lua, pengusiran LRU, transaksi, dan tahap ketekunan pada cakera yang berbeza. Ia menyediakan ketersediaan tinggi melalui Redis Sentinel dan partition automatik dengan Redis Cluster.

Model data inti Redis adalah nilai kunci, tetapi banyak jenis nilai yang disokong: Rentetan, Daftar, Set, Kumpulan Diurutkan, Hash, Aliran, HyperLogLogs, dan Bitmaps. Redis juga menyokong indeks geospasial dengan pertanyaan dan aliran radius.

[Juga di: Bagaimana Redis menggaru dan gatal - dan menukar pangkalan data selama-lamanya]

Untuk membuka sumber Redis, Redis Enterprise menambah ciri untuk kelajuan, kebolehpercayaan, dan fleksibiliti tambahan, serta pangkalan data awan sebagai perkhidmatan. Redis Enterprise skala secara linear hingga ratusan juta operasi sesaat, mempunyai pengedaran global aktif-aktif dengan latensi tempatan, menawarkan Redis on Flash untuk menyokong set data yang besar dengan kos infrastruktur pangkalan data berasaskan cakera, dan menyediakan 99,999% waktu operasi berdasarkan pada binaan -dalam ketahanan dan failover satu digit-saat.

Selanjutnya, Redis Enterprise memperluas fungsi Redis teras untuk menyokong mana-mana kaedah pemodelan data dengan modul seperti RediSearch, RedisGraph, RedisJSON, RedisTimeSeries, dan RedisAI, dan membolehkan operasi dijalankan di antara dan antara modul dan teras. Semua ini disediakan sambil mengekalkan kependaman pangkalan data di bawah satu milisaat.

Ciri dan kes penggunaan Core Redis

Apa maksudnya bahawa Redis kini dapat berfungsi sebagai pangkalan data, cache, dan broker mesej? Dan apakah kes penggunaan peranan tersebut?

Cache adalah fungsi klasik Redis. Pada dasarnya, Redis duduk di hadapan pangkalan data berasaskan cakera dan menyimpan pertanyaan dan hasil; aplikasi memeriksa cache Redis untuk hasil yang disimpan terlebih dahulu, dan meminta pangkalan data berasaskan cakera untuk hasil yang tidak ada dalam cache pada masa ini. Memandangkan kadar tindak balas Redis sub-milisaat, ini biasanya merupakan kemenangan besar untuk prestasi aplikasi. Pemasa tamat dan pengusiran LRU (paling lama digunakan) dari Redis cache membantu memastikan cache sentiasa aktif dan menggunakan memori dengan berkesan.

The kedai sesi adalah satu bahagian penting dalam aplikasi web moden. Ini adalah tempat yang sesuai untuk menyimpan maklumat mengenai pengguna dan interaksinya dengan aplikasi. Dalam seni bina ladang web, hosting kedai sesi secara langsung di pelayan web memerlukan membuat pengguna "tetap" ke pelayan belakang yang sama untuk permintaan masa depan, yang dapat membatasi penyeimbang beban. Menggunakan pangkalan data berasaskan cakera untuk gedung sesi menghilangkan keperluan untuk mengikat sesi ke pelayan web tunggal, tetapi memperkenalkan sumber latensi tambahan. Menggunakan Redis (atau pangkalan data cepat memori lain) sebagai gedung sesi sering menghasilkan seni bina aplikasi web dengan latensi rendah dan throughput tinggi.

Redis dapat berfungsi sebagai broker mesej menggunakan tiga mekanisme yang berbeza, dan salah satu kes penggunaan penting bagi Redis sebagai broker mesej adalah bertindak sebagai gam antara perkhidmatan mikro. Redis mempunyai mekanisme pemberitahuan penerbitan / langganan dengan overhead yang rendah yang memfasilitasi mesej api dan lupa, tetapi tidak dapat berfungsi ketika perkhidmatan tujuan tidak mendengar. Untuk barisan mesej seperti Kafka yang lebih gigih, Redis menggunakan aliran, yang merupakan pasangan kunci-nilai yang dipesan setem masa dalam satu kekunci. Redis juga menyokong senarai elemen yang dihubungkan dua kali ganda yang disimpan pada satu kekunci, yang berguna sebagai barisan pertama / pertama-keluar (FIFO). Perkhidmatan mikro boleh, dan sering dilakukan, menggunakan Redis sebagai cache dan juga menggunakannya sebagai broker mesej, walaupun cache harus dijalankan dalam contoh terpisah dari Redis dari barisan mesej.

Replikasi asas membolehkan Redis membuat skala tanpa menggunakan teknologi kluster versi Redis Enterprise. Replikasi Redis menggunakan model pemimpin-pengikut (juga disebut master-slave), yang tidak segerak secara lalai. Pelanggan boleh memaksa replikasi segerak menggunakan perintah WAIT, tetapi itu tidak menjadikan Redis konsisten di seluruh replika.

Redis mempunyai skrip Lua sisi pelayan, yang membolehkan pengaturcara memperluas pangkalan data tanpa menulis modul C atau kod sisi pelanggan. Transaksi Redis asas membolehkan pelanggan menyatakan urutan perintah sebagai unit yang tidak terganggu, menggunakan perintah MULTI dan EXEC untuk menentukan dan menjalankan urutan. Ini tidak sama dengan urus niaga hubungan dengan rollback.

Redis mempunyai tahap ketekunan pada cakera yang berbeza yang boleh dipilih pengguna. Kegigihan RDB (fail pangkalan data Redis) mengambil snapshot titik-dalam-masa pangkalan data pada selang waktu yang ditentukan. Kegigihan AOF (fail hanya lampiran) mencatat setiap operasi tulis yang diterima oleh pelayan. Anda boleh menggunakan ketekunan RDB dan AOF untuk keselamatan data maksimum.

Redis Sentinel, sendiri sistem yang diedarkan, menyediakan ketersediaan tinggi untuk Redis. Ia melakukan pemantauan contoh master dan replika, pemberitahuan jika ada sesuatu yang salah, dan failover automatik jika master berhenti berfungsi. Ia juga berfungsi sebagai penyedia konfigurasi untuk pelanggan.

Redis Cluster menyediakan cara untuk menjalankan pemasangan Redis di mana data secara automatik dileraikan di beberapa nod Redis. Redis Cluster juga menyediakan beberapa tahap ketersediaan semasa partition, walaupun cluster akan berhenti beroperasi jika majoriti master tidak tersedia.

Seperti yang saya nyatakan sebelumnya, Redis adalah kedai nilai kunci yang menyokong Strings, Lists, Sets, Sorted Sets, Hash, Streams, HyperLogLogs, dan Bitmaps sebagai nilai. Salah satu kes penggunaan paling mudah dan biasa adalah menggunakan nilai integer sebagai pembilang. Untuk menyokong ini, INCR (kenaikan), DECR (penurunan), dan operasi tunggal lain bersifat atom, dan oleh itu selamat dalam persekitaran berbilang pelanggan. Di Redis, apabila kunci dimanipulasi mereka akan dibuat secara automatik jika belum ada.

> Sambungan SET 10

okey

> Sambungan INCR

(integer) 11

> Sambungan INCR

(integer) 12

> Sambungan DEL

(integer) 1

> Sambungan INCR

(integer) 1

> Sambungan INCRBY 100

(integer) 101

> Sambungan DECR

(integer) 100

> Sambungkan DECRBY 10

(integer) 90

Jenis struktur nilai yang lain juga mempunyai contoh tersendiri dalam tutorial Try Redis. Tutorial ini menjalani penyelenggaraan ketika saya mencuba sendiri; Saya menjangkakan ia akan segera diselesaikan, kerana Redis Labs telah terlibat dalam usaha awalnya masyarakat.

Terdapat sejumlah modul tambahan untuk Redis termasuk (dalam urutan populariti menurun) modul rangkaian neural, carian teks penuh, SQL, jenis data JSON, dan pangkalan data grafik. Lesen untuk modul ditetapkan oleh pengarang. Sebilangan modul yang berfungsi dengan Redis terutamanya modul untuk Redis Enterprise.

Peningkatan Redis Enterprise

Dengan menggunakan seni bina kluster bersama, Redis Enterprise memberikan penskalaan linear tanpa batas tanpa mengenakan overhead bukan linear dalam seni bina berskala keluar. Anda boleh menggunakan banyak contoh Redis pada satu simpul kluster, untuk memanfaatkan sepenuhnya seni bina komputer pelbagai teras. Redis Enterprise telah menunjukkan peningkatan kepada ratusan juta operasi sesaat dengan lima waktu operasi (99,999%). Redis Enterprise melakukan pengecilan semula dan pengimbangan semula secara automatik sambil mengekalkan latensi rendah dan throughput yang tinggi untuk beban transaksi.

Redis Enterprise menawarkan penyebaran aktif-aktif untuk pangkalan data yang diedarkan secara global, yang membolehkan operasi membaca dan menulis secara serentak pada set data yang sama di beberapa lokasi geo. Untuk menjadikannya lebih cekap, Redis Enterprise dapat menggunakan jenis data replikasi (CRDT) tanpa konflik untuk mengekalkan konsistensi dan ketersediaan data. Riak dan Azure Cosmos DB adalah dua pangkalan data NoSQL lain yang menyokong CRDT.

Walaupun terdapat banyak literatur akademik mengenai CRDT, saya mengakui bahawa saya tidak sepenuhnya memahami bagaimana atau mengapa ia berfungsi. Ringkasan ringkas dari apa yang mereka lakukan ialah CRDT dapat menyelesaikan ketidakkonsistenan tanpa campur tangan, menggunakan sekumpulan peraturan yang dihasilkan secara matematik. CRDT berharga untuk data bervolume tinggi yang memerlukan keadaan bersama, dan dapat menggunakan pelayan yang tersebar secara geografi untuk mengurangkan kependaman bagi pengguna.

Salah satu perbezaan utama antara Redis dan Redis Enterprise adalah bahawa Redis Enterprise memutuskan jalan data dari pengurusan kluster. Ini meningkatkan operasi kedua-dua komponen. Laluan data didasarkan pada beberapa proxy sifar latency, multi-threaded yang berada di setiap node kluster untuk menutupi kerumitan sistem yang mendasari. Pengurus kluster adalah fungsi pengatur yang menyediakan kemampuan seperti penyusunan ulang, penyeimbangan ulang, auto-failover, kesadaran rak, penyediaan pangkalan data, pengurusan sumber daya, konfigurasi ketekunan data, dan cadangan dan pemulihan. Kerana pengurus kluster sepenuhnya dipisahkan dari komponen jalur data, perubahan pada komponen perisiannya tidak mempengaruhi komponen jalur data.

Redis on Flash adalah ciri Redis Enterprise yang dapat mengurangkan kos perkakasan untuk Redis secara drastik. Daripada perlu membayar RAM untuk terabyte atau menyekat ukuran set data Redis anda, anda boleh menggunakan Redis di Flash untuk meletakkan data panas yang sering diakses dalam memori dan nilai yang lebih sejuk di Flash atau memori yang berterusan, seperti Intel Optane DC.

Modul Redis Enterprise merangkumi RedisGraph, RedisJSON, RedisTimeSeries, RedisBloom, RediSearch, dan RedisGears. Semua modul Redis Enterprise juga berfungsi dengan Redis sumber terbuka.

Apa yang baru dalam Redis 6?

Redis 6 adalah keluaran besar, baik untuk versi sumber terbuka dan versi komersial Redis Enterprise. Berita prestasi adalah penggunaan I / O berulir, yang memberi Redis 6 peningkatan 2x dalam kelajuan berbanding Redis 5 (yang tidak licin). Itu membawa ke Redis Enterprise, yang mempunyai peningkatan kelajuan tambahan untuk kluster seperti yang dijelaskan di atas.

Penambahan senarai kawalan akses (ACL) memberi konsep pengguna Redis 6, dan membolehkan pembangun menulis kod yang lebih selamat. Redis Enterprise 6 menggunakan ACL untuk menawarkan kawalan akses berdasarkan peranan (RBAC), yang lebih sesuai untuk pengaturcara dan DBA.

Ciri baru utama dalam Redis 6

Redis 6.0 sumber terbuka

  • Senarai kawalan akses (ACL)
  • Pengusiran yang lebih baik
  • Threaded I / O
  • Protokol RESP3

Redis Enterprise 6.0

  • Kawalan akses berasaskan peranan (RBAC)
  • Memanjangkan aktif-aktif
  • HyperLogLog
  • Aliran

Redis Enterprise 6.0 menambah sokongan untuk jenis data aliran dalam pangkalan data aktif-aktif. Itu membolehkan ketersediaan tinggi dan latensi rendah sambil bersamaan membaca dan menulis ke dan dari aliran masa nyata di beberapa pusat data di beberapa lokasi geografi.

RedisGears adalah kerangka dinamik yang membolehkan pemaju menulis dan melaksanakan fungsi yang melaksanakan aliran data di Redis. Ini membolehkan pengguna menulis skrip Python untuk berjalan di dalam Redis, dan memungkinkan sejumlah kes penggunaan termasuk menulis balik (Redis bertindak sebagai front-end ke pangkalan data berdasarkan cakera), pemprosesan data masa nyata, pemprosesan streaming dan pemrosesan peristiwa, operasi yang merangkumi struktur dan model data, dan transaksi yang didorong oleh AI.

RedisAI adalah model mesin yang berfungsi di dalam Redis. Ia dapat membuat kesimpulan dengan model PyTorch, TensorFlow, dan ONNX. RedisAI dapat dijalankan pada CPU dan GPU, dan memungkinkan kes penggunaan seperti pengesanan penipuan, pengesanan anomali, dan pemperibadian.

Memasang Redis

Anda boleh memasang Redis dengan memuat turun dan menyusun tarball sumber atau dengan menarik gambar Docker dari Docker Hub. Redis dapat disusun dan digunakan pada Linux, MacOS, OpenBSD, NetBSD, dan FreeBSD. Repositori kod sumber ada di GitHub. Pada Windows, anda boleh menjalankan Redis sama ada dalam bekas Docker atau di bawah Windows Subsystem for Linux (WSL), yang memerlukan Windows 10.

Anda boleh memasang Redis Enterprise di Linux atau dalam bekas Docker. Muat turun Linux datang dalam bentuk pakej binari (DEB atau RPM bergantung pada rasa Linux) dan skrip shell shell untuk pemasangan kluster. Skrip memeriksa empat teras yang diperlukan dan RAM 15 GB untuk pemasangan.

Redis Enterprise Cloud

Cara terpantas untuk memasang Redis Enterprise adalah dengan tidak memasangnya sama sekali, melainkan menjalankannya di Redis Enterprise Cloud. Semasa saya mencuba sendiri untuk tujuan semakan, pada mulanya saya menerima contoh Redis 5; Saya terpaksa meminta peningkatan ke Redis 6.