🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
相关配置如下: ``` rule: - schema: eseap #数据库名称 table: t_user #表名称 #order_by_column: id #排序字段,存量数据同步时不能为空 #column_lower_case:false #列名称转为小写,默认为false #column_upper_case:false#列名称转为大写,默认为false column_underscore_to_camel: true #列名称下划线转驼峰,默认为false # 包含的列,多值逗号分隔,如:id,name,age,area_id 为空时表示包含全部列 #include_columns: ID,USER_NAME,PASSWORD #exclude_columns: BIRTHDAY,MOBIE # 排除掉的列,多值逗号分隔,如:id,name,age,area_id 默认为空 #column_mappings: CARD_NO=sfz #列名称映射,多个映射关系用逗号分隔,如:USER_NAME=account 表示将字段名USER_NAME映射为account #default_column_values: source=binlog,area_name=合肥 #默认的列-值,多个用逗号分隔,如:source=binlog,area_name=合肥 #date_formatter: yyyy-MM-dd #date类型格式化, 不填写默认yyyy-MM-dd #datetime_formatter: yyyy-MM-dd HH:mm:ss #datetime、timestamp类型格式化,不填写默认yyyy-MM-dd HH:mm:ss #lua_file_path: lua/t_user.lua #lua脚本文件,详见使用手册,当此值不为空时后面的配置除redis_structure其余均无效 #lua_script: #lua 脚本,详见使用手册,当此值不为空时后面的配置均无效 value_encoder: json #值编码,支持json、kv-commas、v-commas;默认为json #value_formatter: '{{.ID}}|{{.USER_NAME}}|{{.REAL_NAME}}|{{if eq .STATUS 0}}停用{{else}}启用{{end}}' #redis相关 redis_structure: string # 数据类型。 支持string、hash、list、set、sortedset类型(与redis的数据类型一致) redis_key_prefix: USER_ #key的前缀 redis_key_column: USER_NAME #使用哪个列的值作为key,不填写默认使用主键 #redis_key_formatter: '{{.ID}}|{{.USER_NAME}}' #redis_key_value: user #KEY的值(固定值);当redis_structure为hash、list、set、sortedset此值不能为空 #redis_hash_field_prefix: _CARD_ #hash的field前缀,仅redis_structure为hash时起作用 #redis_hash_field_column: Cert_No #使用哪个列的值作为hash的field,仅redis_structure为hash时起作用,不填写默认使用主键 ``` 其中, value_encoder表示值编码格式,支持json、kv-commas、v-commas三种格式,不填写默认为json,具体如下表: <table> <tr> <th width="15%">格式</th> <th width="20%">说明</th> <th>举例</th> </tr> <td>json</td> <td>json</td> <td>{"id": "1001","userName": "admin","password": "123456", "createTime": "2020-07-20 14:29:19"}</td> </tr> <tr> <td>kv-commas</td> <td>key-value逗号分隔</td> <td>id=1001,userName=admin,password=123456,createTime=2020-07-20 14:29:19</td> </tr> <tr> <td>v-commas</td> <td>value逗号分隔</td> <td>1001,admin,123456,2020-07-20 14:29:19</td> </tr> </table> value_formatter表示值的格式化表达式,具体模板语法参见"表达式模板"章节,当value_formatter不为空时value_encoder无效。 redis_key_formatter表示KEY的格式化表达式,具体模板语法参见"表达式模板"章节。 # **示例** t_user表,数据如下: ![](images/Redis1.png) ## **同步为string类型** 配置如下: ``` schema: eseap #数据库名称 table: t_user #表名称 column_underscore_to_camel: true #列名称下划线转驼峰,默认为false value_encoder: json #值编码 redis_structure: string # 数据类型。 支持string、hash、list、set、sortedset类型(与redis的数据类型一致) redis_key_prefix: USER_ #key的前缀 redis_key_column: USER_NAME #使用哪个列的值作为key,不填写默认使用主键 ``` 同步到Redis的数据如下: ![](images/Redis2.jpg) ## **同步为hash类型** 配置如下: ``` column_underscore_to_camel: true #列名称下划线转驼峰,默认为false value_encoder: json #值编码,支持json、kv-commas、v-commas redis_structure: hash redis_key_value: user_cache #key的值(固定值);当redis_structure为hash、list、set、sortedset此值不能为空 redis_hash_field_prefix: user_name_ #hash的field前缀,仅redis_structure为hash时起作用 redis_hash_field_column: user_name #使用哪个列的值作为hash的field,仅redis_structure为hash时起作用,不填写默认使用主键 ``` 同步到Redis的数据如下: ![](images/Redis3.png) 使用规则能将一个table映射成为一个HASH,但如果需要将talbe中的每一行映射成一个HASH,可以使用Lua脚本实现,详请参见后续的示例。 ## **同步为list类型** 配置如下: ``` value_formatter: '{{.ID}}|{{.USER_NAME}}' # 值格式化表达式,如:{{.ID}}|{{.USER_NAME}},{{.ID}}表示ID字段的值、{{.USER_NAME}}表示USER_NAME字段的值 redis_structure: list redis_key_value: user_list #key的值(固定值);当redis_structure为hash、list、set、sortedset此值不能为空 ``` 同步到Redis的数据如下: ![](images/Redis4.png) ## **同步为Set类型** 配置如下: ``` value_formatter: '{{.ID}}|{{.USER_NAME}}' # 值格式化表达式,如:{{.ID}}|{{.USER_NAME}},{{.ID}}表示ID字段的值、{{.USER_NAME}}表示USER_NAME字段的值 redis_structure: set redis_key_value: user_set #key的值(固定值);当redis_structure为hash、list、set、sortedset此值不能为空 ``` 同步到Redis的数据如下: ![](images/Redis5.png) ## **同步为Sorted Set类型** t_user表,数据如下: ![](images/redis_sort_data.jpg) 配置如下: ``` value_formatter: '{{.ID}}|{{.USER_NAME}}' # 值格式化表达式,如:{{.ID}}|{{.USER_NAME}},{{.ID}}表示ID字段的值、{{.USER_NAME}}表示USER_NAME字段的值 redis_structure: sortedset redis_key_value: users #key的值(固定值);当redis_structure为hash、list、set、sortedset此值不能为空 redis_sorted_set_score_column: CREATE_TIME #sortedset的score,当数据类型为sortedset时,此项不能为空,此项的值应为数字类型 ``` 同步到Redis的数据如下: ![](images/Redis7.png)