-
所有数据表,一条记录一个空间
ps:*4 #表示有4个参数、$4 #表示"参数"有4个字节、
java//1.将"表名:主键"作为空间,字段名作为键,字段值作为value,查询出数据 select 'HSET' AS redis_cmd , CONCAT('表名:',主键) AS redis_key,'字段名' AS hkey, 字段 AS hval from 表名 //2.将查询语句拼接成redis入库语句(每行默认以\n 结尾(windows是\n结尾,linux是 \r结尾) SELECT CONCAT("*4\n",'$', LENGTH(t.redis_cmd), '\n',t.redis_cmd, '\n','$', LENGTH(t.redis_key), '\n',t.redis_key, '\n','$', LENGTH(t.hkey), '\n',t.hkey, '\n','$', LENGTH(t.hval), '\n',t.hval) as redissql FROM (select 'HSET' AS redis_cmd , CONCAT('表名:',主键) AS redis_key,'字段名称' AS hkey, 字段 AS hval from 表名 ) AS t //3.将上述语句存入C:/Users/86188/Desktop/mysql_to_redis.sql脚本中 //4.安装mysql和redis,并且配置全局环境变量 //5.打开cmd窗口或者linux,执行即可 //===mysql8=== mysql --h ip地址 -u账户 -p密码 -D库名 --skip-column-names --raw <C:/Users/86188/Desktop/mysql_to_redis.sql |redis-cli -h 127.0.0.1 -p 6379 --pipe //===mysql6=== mysql -h ip地址 -P 3306 -u 账户 -p密码 -D库名 --skip-column-names --raw <C:/Users/Administrator/Desktop/mysql_to_redis.sql |redis-cli -h 127.0.0.1 -p 6379 --pipe -
所有数据表,一个表一个空间
ps:这里发现当存在空值时,CONCAT结果为空,所以对于空数据需要做处理
java//1.将"表名"作为空间,主键字段作为键,数据json作为value,查询出数据 select 'HSET' AS redis_cmd , '表名' AS redis_key,主键字段 AS hkey, CONCAT('{', '"字段1名":', 字段1, ',"字段2名":', IFNULL(字段2, 'null') ,'}') AS hval from 表名 t //2.将查询语句拼接成redis入库语句 SELECT CONCAT("*4\n",'$', LENGTH(t.redis_cmd), '\n',t.redis_cmd, '\n','$', LENGTH(t.redis_key), '\n',t.redis_key, '\n','$', LENGTH(t.hkey), '\n',t.hkey, '\n','$', LENGTH(t.hval), '\n',t.hval) as redissql FROM (select 'HSET' AS redis_cmd , '表名' AS redis_key,主键字段 AS hkey, CONCAT('{', '"字段1名":', 字段1, ',"字段2名":', IFNULL(字段2, 'null') ,'}') AS hval from 表名 t ) AS t //3.将上述语句存入C:/Users/86188/Desktop/mysql_to_redis.sql脚本中 //4.安装mysql和redis,并且配置全局环境变量 //5.打开cmd窗口或者linux,执行即可 //mysql8 mysql --h ip地址 -u账户 -p密码 -D库名 --skip-column-names --raw <C:/Users/86188/Desktop/mysql_to_redis.sql |redis-cli -h 127.0.0.1 -p 6379 --pipe //mysql5 mysql -h ip地址 -P 3306 -u 账户 -p密码 -D库名 --skip-column-names --raw <C:/Users/Administrator/Desktop/mysql_to_redis.sql |redis-cli -h 127.0.0.1 -p 6379 --pipe -
相关逻辑优化
数据入库,如果作为键的字段非主键,即作为键的字段,可能存在相同的记录,后入的会把前面进入的给覆盖掉。所以如果存在优先级的数据关系,可以将优先级高的数据根据排序,排在后面,这样子最终存入缓存的数据,都是优先级高的数据。
如:现在我们需要将人员信息存入缓存中,并且一个人员可能有多条记录。在这种情况下需要以最新的创建时间的人员记录为主。这种情况我们就可以根据人员id进行升序,插入时间进行升序。这样子,最终存入缓存的,一个人都必定只有一条记录,并且是最新的一条记录
javaselect 'HSET' AS redis_cmd , 'people' AS redis_key,people_id AS hkey, CONCAT('{', '"people_id":', people_id, ',"create_time":', create_time ,'}') AS hval from people t order by people_id asc,create_time asc
mysql数据利用pipe同步至redis
懒惰の天真热2023-07-30 17:37
相关推荐
倔强的石头_1 小时前
Spring Boot 接入金仓数据库:配置分层、启动自检与常见错误黑桃小柒72 小时前
Django模型关系:从一对多到多对多全解析上海安当技术2 小时前
统一身份认证平台怎么落地?11 个异构业务系统接入 ASP 的完整实施路径晚安code2 小时前
RocketMQ 顺序消费实战:批量接口加 Redis Pipeline同步数据全栈派森2 小时前
告别大表膨胀!MySQL 冷热分离落地全过程(含 CDC 与单行锁抢占实战)篮框坏了2 小时前
大事务 DELETE 锁表排查:删 3344 万行,一个清理任务变成周期炸弹在水一缸3 小时前
PGSimCity:当数据库内核变成一座可以漫步的城市jnrjian3 小时前
psql 执行多个 sql 文件LinuxGeek10243 小时前
Kylin-Server-V11、openEuler-22.03和openEuler-24.03适配原生rpm的MySQL 8.4.11版本正式发布@insist1235 小时前
信息系统管理工程师-运维人员管理与核心运维过程(上篇)