memcached を初めて使用しようとしていますが、動的変数を使用したクエリに関していくつか質問があります。
これはこれまでの私のコードのサンプルです。すべてが機能しましたが、コードに誤りがあればお知らせください。
<cfoutput>
<cfset variables.memcachedFactory = createObject("component","memcachedfactory").init("127.0.0.1:11211")>
<cfset variables.memcached = variables.memcachedFactory.getmemcached()>
<cfset email = "sbcglobal"> //Pretend that this is a list with multiple choices for the user to choose from.
//The query below would have multiple outputs based on the selection of the user above
<cfquery name="test" datasource="#ds#">
select top 10 * from contact where email like '%#email#%'
</cfquery>
//Setting the key
<cfset set100 = variables.memcached.set(key="queryTest2",value=test,expiry="5000")>
//Getting the key
<Cfset test6 = variables.memcached.get("queryTest2")>
<br><br>this is the query test - did we retrieve it correctly? - <br />
<Cfdump var="#Test6#"><br />
</cfoutput>
さて、クエリのすべての可能な結果に対してキーを設定する必要がありますか? (私の場合、考えられるすべての結果をカバーするには数百のキーになります)私の理解では、memcached は最初のリクエストの後に値をキーに保存し、その後は db 呼び出しなしで出力を取得します。私の場合に memcached を使用すると、ユーザーの選択に基づいて各クエリが異なるため、コードの無駄になりますか?
また、出力が変更された場合にキャッシュ内の値をどのように更新しますか? これは私が手動でしなければならないことですか?私のデータベースは毎日数百件のトランザクションを取得します。select * from contacts
午前 10 時に、午後 5 時に同じ出力が得られません。