teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2016/03/29 14:58

投稿

CHERRY
CHERRY

スコア25234

answer CHANGED
@@ -3,6 +3,7 @@
3
3
  すぐに思いつく方法としては、セッションの保存などに使われることが多いデータストアに一時保管しておいてから、ある程度まとめてデータベースに書き込むとかが、考えられますね。
4
4
 
5
5
 
6
+ まずは、PHP から memcached か Redis を利用できるようにする。
6
7
 
7
8
  memcached
8
9
  http://php.net/manual/ja/book.memcache.php
@@ -10,4 +11,46 @@
10
11
 
11
12
  Redis
12
13
  http://redis.io/
13
- https://github.com/phpredis/phpredis/
14
+ https://github.com/phpredis/phpredis/
15
+
16
+ つぎに CakePHP の Config/core.php に 次のような Cache 設定を行う。
17
+ http://book.cakephp.org/3.0/en/core-libraries/caching.html
18
+
19
+ ```php
20
+ // Redis の場合
21
+ Cache::config('default', [
22
+ 'engine' => 'Redis',
23
+ 'server' => '127.0.0.1',
24
+ 'port' => 6379,
25
+ ]);
26
+
27
+ // Memcached の場合
28
+ Cache::config('default', [
29
+ 'engine' => 'Memcache',
30
+ 'servers' => '127.0.0.1',
31
+ 'port' => 11211,
32
+ ]);
33
+ ```
34
+
35
+ どちらを使っても 次のような感じで、アクセスできます。
36
+ ```
37
+ // 読み込み
38
+ Cache::read(‘key_name’)
39
+
40
+ // 書き出し
41
+ $data = [ 'key1' => 'data1' ];
42
+ Cache::write(‘key_name’, $data)
43
+ ```
44
+
45
+
46
+ また、CakePHPのキャッシュエンジンにはカウンタAPIがありますので、下記のような使い方もできます。
47
+ ```
48
+ // 初期データ書き込み
49
+ Cache::write('view_count', 0);
50
+
51
+ // 加算
52
+ Cache::increment('view_count');
53
+
54
+ // 減算
55
+ Cache::decrement('view_count');
56
+ ```

1

語句の修正

2016/03/29 14:58

投稿

CHERRY
CHERRY

スコア25234

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  データベースのアクセスを大幅に増やさずにカウントしたいということですね。
2
2
 
3
- すぐに思いつく方法としては、セッションの保存などに使われるメモリキャッシュに一時保管しておいてから、ある程度まとめてデータベースに書き込むとかが、考えられますね。
3
+ すぐに思いつく方法としては、セッションの保存などに使われることが多いデータストアに一時保管しておいてから、ある程度まとめてデータベースに書き込むとかが、考えられますね。
4
4
 
5
5
 
6
6