4
我有一個類,這是仿照這樣,所有的成員變量包括字符串和整數的。在redis中存儲對象的最佳方式是什麼?
> class XYZ extends CFormModel
{
//Values required for rendering the Dashboard
public $username;
public $analysis_type;
public $trace_selection;
public $filter_phantoms;
public $trace_oui_map;
public $frame_min;
public $frame_max;
public $time_end;
public $frame_range;
public $time_range;
//Other Values
private $RETURNURL;
private $PARAMS;
private $connection; // connection to db client
private $database; // handle to database
private $col_trace_info; // handle to trace_info collection
private $col_csv; // handle to csv collection
...
...
我想店redis的緩存以提高性能,這個類的這個對象。 解決方案我來時是使用包含HashMap都有所涉獵..
Yii::app()->cache()->executeCommand("HSET", array("KEY"=>$hashMap, "FIELD"=>$key, "VALUE"=>$object));
我的問題是,有沒有商店更好的方法是在內存中的對象,通過使用任何其他數據結構或存儲之前對其進行序列化,或東西像那樣??
哈希地圖的確是適合您需求的完美契合Redis的數據類型方面:)我旁邊沒有再認識。 Yii,但也許你應該看看一個對象映射器來完成你的繁重工作(不幸的是我不確定PHP中有一個)。你也可以考慮使用serialize()並將整個東西存儲爲一個字符串......或者查看應該執行對象序列化的http://rediska.geometria-lab.net/。 –
@ItamarHaber使用對象映射器或[ORM](http://en.wikipedia.org/wiki/Object-relational_mapping)確實可以是有用的,當你想的一般化層。對象映射器的缺點是:1.更多的依賴關係2.通常爲以前版本的redis設計,所以有時對於redis現在可以執行的操作而言不是最優的3.如果你是新手,它有助於保持簡單,直接。 redis.io具有如此高的質量(imo),因此對象映射器難以跟上。我已經把我的建議放在下面。 –
@TwBert我完全的評論表示贊同和你們的建議是一塵不染,但確實需要使用Redis的等更深層次的瞭解。 (並感謝你在Redis BTW中進行詞彙排序所做的一切)。我的動機是走向ORM方向,就是你所說的#3。 –