如何将任何redis命令的结果存储在一个键中,以及如何将表格数据存储在redis结构中?

3

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

我在PostgreSQL中有一个像这样的表:

  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)如何将任意键的值分配给另一个键或将任何命令的结果存储在键中?
例如,如果我想将“TIME”命令的结果存储在redis中的键testtbl:unixtime中,该怎么做?
2)是否有其他有效的存储此数据的方法?
3)如何获取所有unixtime = 1353475056或flag2 =“N”的记录?
4)Redis中是否有批量获取实用程序?

1个回答

1

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

2, 3) 这取决于具体情况。对于第三个问题,你可以使用一个排序集合来存储Unix时间戳:

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"

使用一个集合来存储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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接