UUID工作我使用:雖然它會輸出一個INT如何與PHPCassa
ämªðÏBà=0£Ï‰
我:
CassandraUtil::uuid1();
這是我得到的。
這是怎麼回事?這是正常的嗎?
也應該使用uuid1或2或3或4或...?
在此先感謝!
UUID工作我使用:雖然它會輸出一個INT如何與PHPCassa
ämªðÏBà=0£Ï‰
我:
CassandraUtil::uuid1();
這是我得到的。
這是怎麼回事?這是正常的嗎?
也應該使用uuid1或2或3或4或...?
在此先感謝!
在phpcassa中有幾個關於UUID的部分。首先,如何生成一個。以下功能是有用的這一:
$my_uuid_string = phpcassa\UUID::uuid1();
$my_uuid_string = phpcassa\UUID::uuid4();
UUID1()產生V1 UUID,其具有時間戳成分,在卡桑德拉稱爲TimeUUIDType。 uuid4()生成一個完全隨機的UUID,在Cassandra中稱爲LexicalUUIDType。 (其他的uuidX()函數通常不是很有用)。這個函數返回的是UUID的字節數組表示 - 基本上是一個16字節的字符串。這是您的"ämªðÏBà=0£Ï‰"
字符串。當你試圖在Cassandra中插入一個UUID時,這就是你想要使用的。
這有可能使具有有用的方法,並從該字節數組屬性一個UUID對象:
$my_uuid = phpcassa\UUID::import($my_uuid_string);
隨着$ my_uuid,你可以得到這樣的「d881bf7c-cf8f-11e0-85e5-一個漂亮的字符串表示00234d21610a'通過獲得$my_uuid->string
。您可以通過執行$my_uuid->bytes
來取回字節表示。任何你從Cassandra獲得的uuid數據都將以字節數組格式存儲,所以如果你想要一個UUID對象,你需要在其上使用UUID::import()
。
此外,UUID::import()
也適用於漂亮的字符串表示形式(看起來像''d881bf7c-cf8f-11e0-85e5-00234d21610a')。
最後,請不要忘記UUID class的文檔。
編輯:更新的鏈接和類名相匹配的最新phpcassa API
uuid1()
基於當前時間和本機的MAC地址的UUID。
uuid2()
似乎不再被使用。
uuid3()
通過在某個名稱空間(例如URL,域名等)中選擇任意名稱的MD5哈希來生成UUID。
uuid4()
生成完全隨機的UUID。
uuid5()
相同uuid3()
,除了使用SHA-1散列來代替MD5。正式優先於uuid3()
。
我正在考慮使用uuid1();但我擔心碰撞。 PHPCassa有什麼方法可以消除這個問題? – jnbdz
你有什麼建議我減少碰撞? – jnbdz
不要擔心碰撞。 UUID的全部目的是使碰撞的可能性微不足道。如果您需要按時間順序排列的內容,請使用uuid1()。如果你不這樣做,請使用uuid4()或uuid1()。 –
您是否會使用它在您需要用戶創建帳戶的網站上生成用戶? – jnbdz