Я думаю использовать Redis для кеширования некоторых снимков пользовательских данных, чтобы ускорить доступ к этим данным. (одна из причин заключается в том, что мои таблицы MySQL страдают от конфликтов блокировки), и я ищу лучший способ импортировать за один шаг такую таблицу (которая может содержать от нескольких записей до миллионов записей):
mysql> select * from mytable where snapshot = 1133;
+------+--------------------------+----------------+-------------------+-----------+-----------+
| id | email | name | surname | operation | snapshot |
+------+--------------------------+----------------+-------------------+-----------+-----------+
| 2989 | [email protected] | fake-name-2989 | fake-surname-2989 | 2 | 1133 |
| 2990 | [email protected] | fake-name-2990 | fake-surname-2990 | 10 | 1133 |
| 2992 | [email protected] | fake-name-2992 | fake-surname-2992 | 5 | 1133 |
| 2993 | [email protected] | fake-name-2993 | fake-surname-2993 | 5 | 1133 |
| 2994 | [email protected] | fake-name-2994 | fake-surname-2994 | 9 | 1133 |
| 2995 | [email protected] | fake-name-2995 | fake-surname-2995 | 7 | 1133 |
| 2996 | [email protected] | 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 | [email protected] | fake-name-2989 | fake-surname-2989 | 1 | 1134 |
| 2990 | [email protected] | fake-name-2990 | fake-surname-2990 | 8 | 1134 |
| 2552 | [email protected] | fake-name-2552 | fake-surname-2552 | 5 | 1134 |
+------+--------------------------+----------------+-------------------+-----------+-----------+
Загруженные снимки в Redis никогда не меняются, они доступны только в течение недели по TTL
Есть ли способ загрузить за один шаг такие данные (строки и столбцы) в redis, комбинируя
redis-cli --pipe
иHMSET
?Какую модель лучше всего использовать в Redis для хранения / получения этих данных (думая о шаблоне доступа)?
Я нашел redis-cli --pipe
Redis Mass Insertion (а также MySQL to Redis за один шаг), но я не могу найти лучшего способ выполнить мои требования (загрузить из mysql за один шаг все строки / столбцы, лучшая модель redis для этого) с помощью HMSET а>
заранее спасибо
Кристиан.
id
в качестве ключа. Если остальные данные никогда не запрашиваются, вы можете просто использовать кодировку данных JSON в качестве значения. - person Joachim Isaksson   schedule 25.09.2013