質問: memcache.Client(['127.0.0.1:11211']) mc.set('item', item, time=300) ``` これにより、選んだitemのデータが1つ、300秒間保持できることは確認できました。 しかし、これでは、itemには、1つしかデータを保持できず、一つのsession_idに対し複数のitemを保持させることができません。 再度これを実行すると、洗い替えられてしまいます。 memcacheである必要はありませんので、セッションを利用してこのようなことができる方法はないでしょうか。 なお、セッションを利用したい理由は、データを永続的に保持したくないという理由だけです。 そのため、もし、難しければ、最悪、データベースを使ってデータを保持し、定期的に時間が経ったデータを削除するという実装にしようと考えています。 お分かりの方、ご教示頂ければ幸いです。 よろしくお願いいたします。
回答: テーブルというよりは複数件値を入れたいというように見受けました。 memcacheでキーをセッションIDにしていない理由はわかりませんが、 キーをセッションIDにして、値はリストをjson.dumpsを使って、文字列化して格納し、 二回目以降は文字列からリストに戻して加えて、またjson.dumpsしてreplaceするとか、 または `key = request.session.session_key + '-001'`のようにセッションIDにインデックスか何かを付加してキーとして(他ユーザーと衝突しないような区切り文字は確認しないとだめですが)、 いくつ保存しているかはセッションに入れておくとか (getしてNoneなら期限切れの値とする必要もありますが) といった方法ではどうでしょう?