我打算使用Redis来缓存一些用户数据快照,以加快对这些数据的访问速度(其中一个原因是因为我的MySQL表受到锁争用的影响),我正在寻找一种一步导入此类表格的最佳方法(该表格可能包含从几条记录到数百万条记录)。
将数据存储到Redis键值存储中。
我可以有许多“快照”加载到Redis中,基本的访问模式是(类似于SQL语法)
mysql> select * from mytable where snapshot = 1133;
+------+--------------------------+----------------+-------------------+-----------+-----------+
| id | email | name | surname | operation | snapshot |
+------+--------------------------+----------------+-------------------+-----------+-----------+
| 2989 | example-2989@example.com | fake-name-2989 | fake-surname-2989 | 2 | 1133 |
| 2990 | example-2990@example.com | fake-name-2990 | fake-surname-2990 | 10 | 1133 |
| 2992 | example-2992@example.com | fake-name-2992 | fake-surname-2992 | 5 | 1133 |
| 2993 | example-2993@example.com | fake-name-2993 | fake-surname-2993 | 5 | 1133 |
| 2994 | example-2994@example.com | fake-name-2994 | fake-surname-2994 | 9 | 1133 |
| 2995 | example-2995@example.com | fake-name-2995 | fake-surname-2995 | 7 | 1133 |
| 2996 | example-2996@example.com | fake-name-2996 | fake-surname-2996 | 1 | 1133 |
+------+--------------------------+----------------+-------------------+-----------+-----------+
将数据存储到Redis键值存储中。
我可以有许多“快照”加载到Redis中,基本的访问模式是(类似于SQL语法)
select * from mytable where snapshot = ? and id = ?
snapshot
,例如:mysql> select * from my_other_table where snapshot = 1134;
+------+--------------------------+----------------+-------------------+-----------+-----------+
| id | email | name | surname | operation | snapshot |
+------+--------------------------+----------------+-------------------+-----------+-----------+
| 2989 | example-2989@example.com | fake-name-2989 | fake-surname-2989 | 1 | 1134 |
| 2990 | example-2990@example.com | fake-name-2990 | fake-surname-2990 | 8 | 1134 |
| 2552 | example-2552@example.com | fake-name-2552 | fake-surname-2552 | 5 | 1134 |
+------+--------------------------+----------------+-------------------+-----------+-----------+
将快照加载到redis中后不会更改,它们仅在TTL期间一周内可用
有没有一种方法可以使用
redis-cli --pipe
和HMSET
将这种类型的数据(行和列)一次性加载到redis中?在存储/获取此数据时,在redis中使用最佳模型是什么(考虑访问模式)?
我发现了redis-cli --pipe
Redis Mass Insertion(以及MySQL to Redis in One Step),但我无法想出实现我的要求(从mysql中一次性加载所有行/列,最佳redis模型)的最佳方法,使用HMSET
提前致谢
Cristian。