PHPは、統合プライマリ・キー・キャッシュ用のピット
816 ワード
質問:PHPにとってhash構造に基づく
array
は万能であるため,設計テーブルの抽象化の際には$pk = array('field1', 'field2');
という文でプライマリ・キーを設定する.Redisを格納する必要がある場合、$pk
を何らかの形で展開してKeyとしてRedisに格納する.しかし、実際のプロセスでは、キャッシュが見つからないことがよくあります.位置決めは長時間デバッグされましたが、結合プライマリ・キーに対してクエリーを実行するときに、結合プライマリ・キーのパラメータ$object->get(['field1' => 'value1', 'field2' => 'value2']);
を右側に渡します.このような書き方は勝手です.つまり、2つのフィールドが逆になっている可能性があります.データベース操作層をWHERE
に展開した後も,配列をforeach
遍歴してWHERE field1='value1' AND field2='value2'
に展開するが,WHEREの後の順序がどのように書かれているかは実際の結果には影響しない.しかしredisのkeyに展開する過程で,一定の順序でなければならないため,与えられたプライマリ・キー配列の並べ替えが異なると,生成されたkeyは自然に異なり,結果は自然に見つからなくなる.解決策:配列keyのソートは、キャッシュを取得するたびにksort
またはkrsort
を使用して行います.