mysql查詢字段大于,mysql中UUID產(chǎn)生的數(shù)據(jù)?
因?yàn)檫€沒有寫入mysql,所以你在把數(shù)據(jù)寫入Redis時(shí),需要設(shè)計(jì)一個(gè)key來唯一標(biāo)識(shí)一條數(shù)據(jù).
MySQL表中應(yīng)該設(shè)置一個(gè)唯一字段用于存儲(chǔ)這個(gè)key.
這個(gè)key可以是一個(gè)由程序即時(shí)生成的隨機(jī)唯一值,比如可以取Linux提供的uuid:
/proc/sys/kernel/random/uuid
取到后用sadd添加到Redis的集合(元素唯一)里.
添加成功,表示集合中沒有這個(gè)uuid,在集合里是唯一的.
然后再把這個(gè)uuid用lpush添加到Redis的列表(元素有序)里.
lpush入隊(duì)后,當(dāng)列表的長度大于等于N(自定義數(shù)值)時(shí),Redis用lrange取出列表里的元素并批量寫入到MySQL,寫入成功后用ltrim刪掉列表中已經(jīng)處理的元素.
優(yōu)化就體現(xiàn)在:原來的即時(shí)寫入轉(zhuǎn)變?yōu)榕繉懭?
風(fēng)險(xiǎn)是:Redis意外崩潰有可能丟數(shù)據(jù).
比如你的Redis配置了 appendfsync everysec
那就有丟失前1秒數(shù)據(jù)的風(fēng)險(xiǎn).