我现在是用一个 while 循环每隔一秒钟查询一次来判断的,有没有什么其他方法可以实现这个需求? 谢谢
![]() |
1
lishunan246 310 天前 via Android
canal
|
2
mtrec 310 天前
不如说说你想干什么以及你现在的做法有什么让你不满的地方
|
![]() |
3
qiyuey 310 天前 via Android
监听 binlog
|
4
dorothyREN 310 天前 ![]() 设置个更新操作的触发器,然后触发器里面判断有没有更新这个值。
|
5
Ackvincent OP @lishunan246
@mtrec @qiyuey @dorothyREN 我现在代码是这样 感觉很蠢得样子 ```python while True: print('start check') action = mysql.get_action() if action == 'turn_on': turn_on_the_light() elif action == ''turn_off': turn_off_the_light() else: time.sleep(1) continue ``` |
![]() |
6
dangyuluo 310 天前
自己写个插件
MySQL UDF |
![]() |
8
dustynight 310 天前 via Android ![]() 看起来你这个值就不该放到数据库,也许你可以试试配置中心?
|
![]() |
9
ericls 310 天前 via iPhone
Trigger
|
![]() |
10
imycc 310 天前 ![]() 我们之前搞了个 trigger,当插入值的时候自动触发其他关联表的更新。
但是后面负载高的时候操作偶尔会丢失,找了 DBA 查了 binlog,貌似是出错了还是怎么的,反正排查特别麻烦。查错误的时间快够我重构接口了。 如果你有数据库的权限去监听变更,那一般来说 Model 层代码也是自己维护的,这种事情最好在业务逻辑里面做。 当更新字段值的时候,自己写逻辑,想直接改关联数据,还是用消息队列,都可以比较直观地执行,后期查日志也方便。 |
![]() |
11
qiyuey 310 天前 via Android
@Ackvincent 搜索配置中心
|
![]() |
12
CEBBCAT 310 天前 via Android ![]() 看起来是 IoT 应用,为什么没有采用基于订阅 /回调之类的架构呢? MySQL 连接还是比较重的吧
|
13
ila 310 天前 via Android
trigger+scheduler event
|
![]() |
14
darkengine 310 天前
@Ackvincent action 就不应该存到数据库里,放队列里更合适
|
15
bthulu 310 天前
订阅并解析 binlog 就行了
|
16
update 310 天前 ![]() 1,数据库触发器
2,binlog 监听 3,业务代码层监听 |
17
inhzus 310 天前 via iPhone
觉得这种业务形式不太适合数据库,可以看看类似于阿里云 configserver 的产品
|
![]() |
18
cheng6563 310 天前
如果懒得改,就给这数据加个版本号然后继续凑合用即可。
|
19
mtrec 310 天前
@Ackvincent 除了感觉很蠢有没有别的问题 如果能满足现在的需求 没有必要增加别的依赖
|
20
PiersSoCool 310 天前
x s 轮询一次
|
21
fregie 310 天前
用 etcd
|
22
Ackvincent OP 多谢楼上各位,看了各位的解决方案,我还是决定用自己比较蠢的方法,毕竟虽然蠢,但是没有什么坑要踩。
|
![]() |
23
ch2 310 天前
怎么方便怎么来
|
![]() |
24
razertory 310 天前
订阅 binlog
|
![]() |
25
masterclock 310 天前
1. 又不是不能用
2. 带持久化的 mqtt,用 retained 的消息 |
![]() |
27
chengyiqun 310 天前
这种用配置中心很香啊, 比如 nacos
|