我正在嘗試爲我的網站上的項目生成唯一的短網址。例如,用戶可以添加一個項目,所產生的URL會是這樣的:如何生成短的,獨特的網址
http://example.com/item/abc
我希望的唯一標識符要由3個或4個字符,其中的字符是字母和數字。我認爲不是隨機生成字符串,然後確保它們是唯一的,並且尚未使用,我可以提前生成它們並將它們存儲在數據庫中。然後,當用戶添加一個項目時,我可以從數據庫中選擇下一個縮短的url字符串,並將其分配給該項目。這是解決這個問題的好方法嗎?有更好的方法嗎?我認爲它會使它更簡單,因爲它們已經生成。但是,我還可以看到潛在的種族問題,其中兩個項目被分配了相同的識別字符串,並且我不確定LOCK TABLES
是否是最佳解決方案。
此外,沒有使用LOCK TABLES
,可以這樣保證在MySQL沒有競爭條件?
update ids set item_id=1 WHERE id=(SELECT id FROM ids WHERE item_id IS NULL LIMIT 1);
然後我可以選擇ID爲1的項目ID?在那個查詢期間沒有其他查詢能夠聲明它?
如果您將項目存儲在數據庫中,它們可能具有某種ID,對吧?難道你不能從該ID生成三個或四個字符的字符串,如'1' - >'aaa','2' - >'aab',...? – PoByBolek
看看http://stackoverflow.com/questions/742013/how-to-code-a-url-shortener – Swapnil
@PoByBolek,是的,我可以。我只是希望字符串不太可預測。不一定按順序。 – srchulo