redis中的Mysql表示

时间:2017-07-27 12:06:38

标签: redis

我没有任何redis经验,我想用它来缓存mysql php结果,但它变得很复杂。

在mysql中我有两个表

tbl_users: id, username, first_name, last_name
tbl_orders: order_id, order_name, order_date........

假设我想在redis中存储用户和订单表记录,我看起来像json一样

{

  "users":{
           "1":{username:"jane", first_name:"user1", last_name:".."}
            "2":{username:"jane", first_name:"user1", last_name:".."}
              ...........
           }
    "orders":{
               "1":{order_name:"jane", order_date:"user1",....}
                "1":{order_name:"jane", order_date:"user1", .....}
             } 
       }

    }

在这种情况下,我应该创建两个redis服务器,一个用于用户,另一个用于订单,或者我应该如何处理。

1 个答案:

答案 0 :(得分:0)

首先,您应该阅读An introduction to Redis data types and abstractions,了解Redis是什么以及它可以做些什么。

听起来你想要在Redis中缓存3件事:

  1. 特定用户: 这就是Redis最擅长的。 SET user:1 '{username:"jane", first_name:"user1", last_name:".."}', 然后用GET user:1
  2. 读回用户JSON
  3. 所有用户: 这可能不值得在Redis中缓存,因为MySQL在返回tbl_users中的所有行时会非常快。 您可以使用Redis列表(通​​过LPUSH并获取所有这些LRANGE {listname} 0 -1)来缓存它。 但是你现在只是复制数据库表的功​​能,所以我真的不推荐它。
  4. 特定用户的订单: 同样,MySQL应该能够有效地为您做到这一点,tbl_orders上有一个好的index,但Redis也可以使用列表来缓存它。