Hi everybody
This issue is actually a question for me, then I groped and handled it, so share here and discuss
Suppose I have model user.rb, function find (: id), I want to cache query of this function of a certain model, not all, how will it be handled
Here is my treatment
model: user.rb
1 2 3 4 5 6 7 8 9 10 11 |
<span class="token keyword">def</span> <span class="token method-definition"><span class="token keyword">self</span> <span class="token punctuation">.</span> <span class="token function">find</span></span> <span class="token punctuation">(</span> id <span class="token punctuation">)</span> user <span class="token operator">=</span> <span class="token constant">Rd</span> <span class="token punctuation">.</span> user_get <span class="token punctuation">(</span> id <span class="token punctuation">)</span> <span class="token keyword">if</span> <span class="token operator">!</span> user puts <span class="token string">"OVERRIDING no user <span class="token interpolation"><span class="token delimiter tag">#{</span> id <span class="token delimiter tag">}</span></span> "</span> user <span class="token operator">=</span> <span class="token keyword">super</span> <span class="token constant">Rd</span> <span class="token punctuation">.</span> user_set <span class="token punctuation">(</span> id <span class="token punctuation">,</span> user <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token symbol">:ex</span> <span class="token operator">=</span> <span class="token operator">></span> <span class="token number">3600</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token keyword">end</span> <span class="token keyword">return</span> user <span class="token keyword">end</span> |
services / rd.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<span class="token keyword">class</span> <span class="token class-name">Rd</span> <span class="token keyword">def</span> <span class="token method-definition"><span class="token keyword">self</span> <span class="token punctuation">.</span> <span class="token function">user_get</span></span> <span class="token punctuation">(</span> id <span class="token punctuation">)</span> <span class="token keyword">begin</span> user <span class="token operator">=</span> <span class="token variable">$rd</span> <span class="token punctuation">.</span> get <span class="token punctuation">(</span> <span class="token string">"user_info_ <span class="token interpolation"><span class="token delimiter tag">#{</span> id <span class="token delimiter tag">}</span></span> "</span> <span class="token punctuation">)</span> puts <span class="token string">"user redis <span class="token interpolation"><span class="token delimiter tag">#{</span> id <span class="token delimiter tag">}</span></span> "</span> <span class="token keyword">return</span> <span class="token constant">User</span> <span class="token punctuation">.</span> <span class="token keyword">new</span> <span class="token punctuation">(</span> <span class="token constant">JSON</span> <span class="token punctuation">.</span> parse <span class="token punctuation">(</span> user <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token keyword">rescue</span> <span class="token keyword">return</span> <span class="token keyword">nil</span> <span class="token keyword">end</span> <span class="token keyword">end</span> <span class="token keyword">def</span> <span class="token method-definition"><span class="token keyword">self</span> <span class="token punctuation">.</span> <span class="token function">user_set</span></span> <span class="token punctuation">(</span> id <span class="token punctuation">,</span> user <span class="token punctuation">,</span> options <span class="token operator">=</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token variable">$rd</span> <span class="token punctuation">.</span> set <span class="token punctuation">(</span> <span class="token string">"user_info_ <span class="token interpolation"><span class="token delimiter tag">#{</span> id <span class="token delimiter tag">}</span></span> "</span> <span class="token punctuation">,</span> user <span class="token punctuation">.</span> to_json <span class="token punctuation">,</span> options <span class="token punctuation">)</span> <span class="token keyword">end</span> <span class="token keyword">end</span> |
$ rd is the redis client connection where config / application.rb
1 2 3 4 5 6 7 |
<span class="token variable">$rd</span> <span class="token operator">=</span> <span class="token constant">Redis</span> <span class="token punctuation">.</span> <span class="token keyword">new</span> <span class="token punctuation">(</span> <span class="token symbol">:url</span> <span class="token operator">=</span> <span class="token operator">></span> <span class="token string">"redis:// <span class="token interpolation"><span class="token delimiter tag">#{</span> <span class="token constant">ENV</span> <span class="token punctuation">[</span> <span class="token string">'REDIS_CONNECT'</span> <span class="token punctuation">]</span> <span class="token delimiter tag">}</span></span> /0"</span> <span class="token punctuation">,</span> <span class="token symbol">:connect_timeout</span> <span class="token operator">=</span> <span class="token operator">></span> <span class="token number">0.2</span> <span class="token punctuation">,</span> <span class="token symbol">:read_timeout</span> <span class="token operator">=</span> <span class="token operator">></span> <span class="token number">1.0</span> <span class="token punctuation">,</span> <span class="token symbol">:write_timeout</span> <span class="token operator">=</span> <span class="token operator">></span> <span class="token number">0.5</span> <span class="token punctuation">)</span> |
Everyone has any way or have any contribution, please comment, thank you