我目前在我的图像站点上有一个喜欢功能,它根据唯一的 $imgids 将用户 IP 存储在数据库中。
IP 当前存储为字符串。为了节省空间,我不想将 IP 存储为带小数点的字符串,而是存储为 32 位整数(每个整数 1 位,字符串中每个字符 1 个字节)。我认为这可以节省大量空间,因为我有可能让 n 个独特的 IP 喜欢 x 个图像......
因此,给定字符串“109.181.156.221”,数字最多为 12 个字节,每个小数点 + 3 个字节……所以 15 个字节 * 5000 个 IP * 10 个图像 ID = 7.1 Mb
与 32 位 109181156221 相比,4 字节 * 5000 IP * 100 图像 ID = 2 Mb
所以,在我插入 IP 之前,我想使用正则表达式来删除小数,然后将 IP 存储为数字......“109.181.156.221”-> 109181156221 我是正则表达式的新手,但我已经试过这个,但它不会工作:
$ipINT = preg_replaceAll("\\.+$", "" , $ipString);
所以我的问题是:
1) 在 Mysql 数据库中节省空间是否重要?这值得麻烦吗?
2)我的正则表达式在哪里?
3)如果我想读它,我能把它转换回来吗?
有什么想法吗?
谢谢!