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.