私はRedisを初めて使い、phpとredisを使って実装しようとしています。私はちょうどmysqlの状態を記述しています、私はmysqlからredisに何かを移行していません。MySQLのRedisの使用例を理解する
のは、私はすべての呼び出し
UPDATE `table`
SET count = count + 12
WHERE user_id = 123 AND date = 2017-06-06
で、カウント列は次のように更新される
+-----------+------------+---------+
| user_id | date | count |
+-----------+------------+---------+
| 123 | 2017-06-06 | 231 |
| 123 | 2017-06-07 | 456 |
| 124 | 2017-06-06 | 433 |
| 124 | 2017-06-07 | 188 |
+-----------+------------+---------+
次のような構造で、私は、ユーザーの日々の消費量を格納する表を、持っているとしましょう
Redisについて読んだ後、私はRedisにテーブルの概念がなく、そのようなデータを保存することを理解しています。
(e.g. key user:123:date:2017-06-06)
127.0.0.1:6379> INCRBY user:123:date:2017-06-06 12
(integer) 12
127.0.0.1:6379> INCRBY user:123:date:2017-06-06 32
(integer) 44
これまでのところとても良いです。
今私が直面している問題は、クエリにあります。 MySQLでは、月の終わりに、私は単純に次のクエリ使用して、ユーザーが自分の消費や課金を表示することができます。
SELECT `date`,`count` FROM `table` WHERE `date` > 'some_date' AND `user_id` = 123
または
SELECT SUM(`count`),`user_id`,MONTH(date) GROUP BY `user_id`,MONTH(`date`)
をしかし、私はRedisの中でこれを行う方法を確認していません私は、単一のユーザのために計算したい場合は、その後、私は、キーの形式を知っているし、USER_IDてきたように、それは簡単ですので、私は、キーを作成して、私は
127.0.0.1:6379> GET user:123:date:2017-06-06 32
が必要な正確なデータを取得することができます。しかしTHERです何かのようなものか何か類似のもの
127.0.0.1:6379> GET user:*:date:*
このような種類のクエリやものについては、
すべてのヘルプはappreciated.Thanks を
(理由(あなたはいくつかの有用な文書を私に指示することができます場合は)、私は毎秒何インクリメントクエリがあるだろう、MySQLがあるRedisの中でそれを実装しておりませんでしょう何百回も、私はレディスがこれより優れていると思っていました。最大時間はINCRクエリだけで1-2回の検索です)