Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Yii2 + Redis làm Cơ sở dữ liệu

Redis DB có thể được khai báo là bộ nhớ đệm thành phần hoặc dưới dạng kết nối cơ sở dữ liệu hoặc cả hai .

Khi nó được khai báo là bộ nhớ đệm thành phần ( sử dụng yii / redis / cache ) nó có thể truy cập được trong thành phần đó để lưu trữ khóa / giá trị các cặp như được hiển thị ở đây.

$cache = Yii::$app->cache;

// try retrieving $data from cache
$data = $cache->get($key);
// store $data in cache so that it can be retrieved next time
$cache->set($key, $data);

// one more example:
$access_token = Yii::$app->security->generateRandomString();
$cache->add(
    // key
    $access_token, 
    // data (can also be an array)
    [
        'id' => Yii::$app->user->identity->id
        'name' => Yii::$app->user->identity->name
    ], 
    // expires
    60*60*3
);

Ngoài ra, các thành phần khác có thể bắt đầu sử dụng nó cho các đề xuất lưu vào bộ nhớ đệm như session nếu được định cấu hình để làm như vậy hoặc như yii \ web \ UrlManager, theo mặc định sẽ cố gắng lưu vào bộ đệm các quy tắc URL được tạo trong bất kỳ cơ chế bộ nhớ đệm hợp lệ nào được xác định trong cache của tệp cấu hình thành phần như được giải thích ở đây. Vì vậy, việc tìm thấy một số dữ liệu được lưu trữ không phải của bạn trong trường hợp đó là điều bình thường.

Khi Redis được khai báo là kết nối DB như trong các liên kết bạn đã cung cấp, nghĩa là sử dụng lớp yii \ redis \ Connection, bạn có thể làm cho mô hình của mình mở rộng lớp \ yii \ redis \ ActiveRecord của nó như bất kỳ mô hình ActiveRecord nào khác trong Yii. Sự khác biệt duy nhất mà tôi biết cho đến nay là bạn cần phải xác định các thuộc tính của mình theo cách thủ công vì không có lược đồ DB nào để phân tích cú pháp cho cơ sở dữ liệu NoSQL. Sau đó, chỉ cần xác định các quy tắc, kịch bản, quan hệ, sự kiện, ... của bạn như bất kỳ mô hình ActiveRecord nào khác:

class Customer extends \yii\redis\ActiveRecord
{
    public function attributes()
    {
        return ['id', 'name', 'address', 'registration_date'];
    }

    public function rules()
    {
        return [
            ['name', 'required'],
            ['name', 'string', 'min' => 3, 'max' => 12, 'on' => 'register'],
            ...
        ];
    }

    public function attributeLabels() {...}
    ...
}

Tất cả các phương thức khả dụng bao gồm save() , validate() , getErrors() , ... có thể được tìm thấy ở đây và nên được sử dụng giống như bất kỳ lớp ActiveRecord nào khác như được hiển thị trong hướng dẫn chính thức.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nhận tất cả các trường và giá trị của khóa băm bằng cách sử dụng redis trong nút

  2. Làm cách nào để lưu trữ trong tập hợp được sắp xếp của Redis với dấu thời gian phía máy chủ dưới dạng điểm số?

  3. Memcache v / s redis để duy trì các phiên liên tục?

  4. Go JSON giải mã rất chậm. Cách tốt hơn để làm điều đó là gì?

  5. Tắt redis khi nhiều lần hết thời gian sử dụng khởi động lò xo