我第一次尝试使用 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 是否只是浪费代码,因为每个查询都会根据用户的选择而有所不同?
另外,如果输出发生变化,如何更新缓存中的值?这是我必须手动做的事情吗?我的数据库每天有 100 笔交易,select * from contacts
上午 10 点的交易在下午 5 点不会有相同的输出