如何在kay中存储任何redis命令的结果以及如何在redis结构中存储表数据?

时间:2012-11-21 08:13:24

标签: redis

大家好我是redis的新手,我想在我们的应用程序中使用redis进行频繁的数据库插入/更新和删除。

我在postgres中有一张这样的表。

  testtbl                                                   

 unixtime   |   code    | flag1 |count1     |   count2  |   flag2
_________________________________________________________________
1353475056  |   1234    |  A    |60         |   8955    |     N   
1353475060  |   5248    |  B    |131        |   22500   |     F   
1353475056  |   7267    |  C    |36         |   10130   |     X   
1353475056  |   1908    |  B    |0          |       0   |     N   
1353475060  |   9290    |  E    |90         |   11905   |     X   
1353475056  |   6123    |  F    |1          |   702     |     F   
1353475060  |   4145    |  G    |117        |   47920   |     X   
1353475099  |   7000    |  L    |43         |   21720   |     F   
1353475099  |   3256    |  D    |40         |   3915    |     N   

我尝试使用redis哈希存储这些记录,如下所示

hmset testtbl:1 unixtime 1353475056 code 1234 flag1 A count1  60 count2  8955 flag2 N
hmset testtbl:2 unixtime 1353475060 code 5248 flag1 B count1 131 count2 22500 flag2 F
hmset testtbl:3 unixtime 1353475056 code 7267 flag1 C count1  36 count2 10130 flag2 X
hmset testtbl:4 unixtime 1353475056 code 1908 flag1 B count1   0 count2     0 flag2 N
hmset testtbl:5 unixtime 1353475060 code 9290 flag1 E count1  90 count2 11905 flag2 X
hmset testtbl:6 unixtime 1353475056 code 6123 flag1 F count1   1 count2   702 flag2 F
hmset testtbl:7 unixtime 1353475060 code 4145 flag1 G count1 117 count2 47920 flag2 X
hmset testtbl:8 unixtime 1353475099 code 7000 flag1 L count1  43 count2 21720 flag2 F
hmset testtbl:9 unixtime 1353475099 code 3256 flag1 D count1  40 count2  3915 flag2 N

要获得任何记录,我需要找到该记录的密钥,并且 然后使用该密钥特定记录需要像这样

获取
redis 127.0.0.1:6379> hgetall testtbl:3
 1) "unixtime"
 2) "1353475056"
 3) "code"
 4) "7267"
 5) "flag1"
 6) "C"
 7) "count1"
 8) "36"
 9) "count2"
10) "10130"
11) "flag2"
12) "X"

现在问题是 1)如何将任何键的值分配给另一个键或将任何命令的结果存储在kay中?
例如。如果我想在redis中将“TIME”命令的结果存储到key testtbl:在这种情况下为unixtime
2)有没有其他有效的方法来存储这些数据? 3)如何获得unixtime = 1353475056或flag2 =“N”的所有记录 4)redis中是否有批量获取实用程序?

1 个答案:

答案 0 :(得分:1)

1)您只能在客户端实现它。

2,3)这取决于场景。对于第三个问题,您可以使用有序集来存储unixtime:

ZADD testtbl.unixtime 1353475056 testtbl:1 1353475060 testtbl:2 1353475056 testtbl:3 ...

获取unixtime = 1353475056的所有记录:

ZRANGEBYSCORE testtbl.unixtime 1353475056 1353475056
1) "testtbl:1"
2) "testtbl:3"

使用set来存储flag2:

SADD testtbl.flag2:N testtbl:1 testtbl:4 testtbl:9

获取其flag2 =“N”

的所有记录
SMEMBERS testtbl.flag2:N
1) "testtbl:1"
2) "testtbl:4"
3) "testtbl:9"