要包含 ipv4 和 ipv6,网上查了很多人建议 ipv4 用 php 的 ip2long 存成整数型,但是 ipv6 呢?怎样设计一个类型,能同时存 ipv4 和 ipv6,方便极速检索
1
reus 2019-07-30 12:59:53 +08:00
换 PostgreSQL,用 cidr 类型。
|
2
reus 2019-07-30 13:01:40 +08:00
mysql 就用 binary(16)
|
3
shoaly 2019-07-30 13:43:13 +08:00 1
问一下 存成 字符串 有啥弊端?
|
4
William911 2019-07-30 14:50:16 +08:00
有这么纠结吗? 纯展示需要就存字符串得了
|
5
jinhan13789991 2019-07-30 15:27:50 +08:00 via Android
转二进制字符串~
|
6
agdhole 2019-07-30 15:48:33 +08:00 via Android
int32
|
7
nlimpid 2019-07-30 16:16:17 +08:00
如果只有 ipv4,用 int 就够了。
如果同时有 ipv4 和 ipv6,可以使用 varbinary(16),mysql 有内置的方法处理 ip 类型,见 https://dev.mysql.com/doc/refman/5.6/en/miscellaneous-functions.html |
8
ladypxy 2019-07-30 16:26:36 +08:00 via iPhone
Discuz 做法是使用 varchar(45)
|
11
wangkai0351 2019-07-30 16:32:36 +08:00
@hmxxmh 一生二,二生三,三生万物?
|
12
falcon05 2019-07-30 16:35:25 +08:00 via iPhone
kiss 原则,keep it simple stupid …
|
13
mostkia 2019-07-30 16:39:38 +08:00
有 ipv6,感觉字符串好一些吧,同时限制一下数据长度即可。
|
14
fyxtc 2019-07-30 16:39:59 +08:00
怎么简单怎么来,纯展示字符串最直接,如果要解析,那么自己掂量看是把解析业务放在数据库做还是代码层做。
|