Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

محرك جدول Redis

يتيح هذا المحرك تكامل ClickHouse مع Redis. ونظرًا إلى أن Redis يعتمد نموذج المفتاح/القيمة (kv)، فإننا نوصي بشدة بقصر الاستعلامات عليه على الاستعلامات النقطية فقط، مثل where k=xx أو where k in (xx, xx).

إنشاء جدول

CREATE TABLE [IF NOT EXISTS] [db.]table_name
(
    name1 [type1],
    name2 [type2],
    ...
) ENGINE = Redis({host:port[, db_index[, password[, pool_size]]] | named_collection[, option=value [,..]] })
PRIMARY KEY(primary_key_name);

معلمات المحرّك

  • host:port — عنوان خادم Redis. يمكنك تجاهل المنفذ، وسيُستخدم منفذ Redis الافتراضي 6379.
  • db_index — نطاق فهرس Redis db من 0 إلى 15، والقيمة الافتراضية هي 0.
  • password — كلمة مرور المستخدم، والقيمة الافتراضية هي سلسلة فارغة.
  • pool_size — الحد الأقصى لحجم connection pool في Redis، والقيمة الافتراضية هي 16.
  • primary_key_name - أي اسم عمود في قائمة الأعمدة.

يمكن أيضًا تمرير الوسيطات باستخدام المجموعات المسماة. في هذه الحالة، يجب تحديد host وport كلٌّ على حدة. يُوصى بهذا النهج لبيئة production. في الوقت الحالي، تكون جميع المعلمات المُمرَّرة إلى Redis باستخدام المجموعات المسماة مطلوبة.

مثال على الاستخدام

أنشئ جدولًا في ClickHouse باستخدام المحرك Redis مع وسائط بسيطة:

Querysql
CREATE TABLE redis_table
(
    `key` String,
    `v1` UInt32,
    `v2` String,
    `v3` Float32
)
ENGINE = Redis('redis1:6379') PRIMARY KEY(key);

أو باستخدام المجموعات المسماة:

<named_collections>
    <redis_creds>
        <host>localhost</host>
        <port>6379</port>
        <password>****</password>
        <pool_size>16</pool_size>
        <db_index>0</db_index>
    </redis_creds>
</named_collections>
Querysql
CREATE TABLE redis_table
(
    `key` String,
    `v1` UInt32,
    `v2` String,
    `v3` Float32
)
ENGINE = Redis(redis_creds) PRIMARY KEY(key);

إدراج:

Querysql
INSERT INTO redis_table VALUES('1', 1, '1', 1.0), ('2', 2, '2', 2.0);
Querysql
SELECT COUNT(*) FROM redis_table;
Responsetext
┌─count()─┐
│       2 │
└─────────┘
Querysql
SELECT * FROM redis_table WHERE key='1';
Responsetext
┌─key─┬─v1─┬─v2─┬─v3─┐
│ 1   │  1 │ 1  │  1 │
└─────┴────┴────┴────┘
Querysql
SELECT * FROM redis_table WHERE v1=2;
Responsetext
┌─key─┬─v1─┬─v2─┬─v3─┐
│ 2   │  2 │ 2  │  2 │
└─────┴────┴────┴────┘

تحديث:

يرجى ملاحظة أنه لا يمكن تحديث المفتاح الأساسي.

Querysql
ALTER TABLE redis_table UPDATE v1=2 WHERE key='1';

الحذف:

Querysql
ALTER TABLE redis_table DELETE WHERE key='1';

Truncate:

تفريغ Redis db بشكل غير متزامن. كما يدعم Truncate أيضًا وضع SYNC.

Querysql
TRUNCATE TABLE redis_table SYNC;

JOIN:

الربط مع جداول أخرى.

Querysql
SELECT * FROM redis_table JOIN merge_tree_table ON merge_tree_table.key=redis_table.key;

القيود

يدعم محرك Redis أيضًا استعلامات المسح، مثل where k > xx، لكن له بعض القيود:

  1. قد يُنتج استعلام المسح بعض المفاتيح المكررة في حالات نادرة جدًا أثناء إعادة التجزئة. راجع التفاصيل في Redis Scan.
  2. أثناء المسح، قد تُنشأ مفاتيح وتُحذف، لذلك لا يمكن لمجموعة البيانات الناتجة أن تمثل نقطة زمنية محددة تمثيلًا صحيحًا.
Navigation