• 首页
  • nodejs
  • node.js 下给字符串生成一个哈希散列值

node.js 下给字符串生成一个哈希散列值

我们常常对一个拼接的变量进行映射,让一个变量通过一定的算法得出一个可控的结果然后在操作.比如淘宝的分布式存储,淘宝会根据注册用户ID对64取模,结果肯定是小于64的数,就可以根据此数来确定用户信息存储在64台服务器中的哪一台.

这里一个前提是会员ID是数值型,如果是字符串怎么办?本文要解决的就是这个问题.

思路:给字符串求哈希散列码, 然后对固定数值求模,最后确定该把数据存储到那台服务器上.

node.js 下有很多求哈希散列值的模块,本文用到的是 fnv-plus

github 地址: https://github.com/tjwebb/fnv-plus

npm 安装模块(这里就省略不说了)


使用:

var fnv = require('fnv-plus');


fnv.hash('xiaoxiao', 64) 这里注意,对 字符串 'xiaoxiao' 求64位哈希散列值时,这里返回一个对象.如下图.

返回的这对象告诉你此散列值是64位,value 是什么,同时还给暴露出3个方法,下面一一介绍这3个方法:

dec()  将散列值转化成10进制

hex()   将散列值转化成16进制

str()      将散列值转化为字符串

> console.log(fnv.hash('moke191000', 64).str());
1rnie5xrf2iqe

> console.log(fnv.hash('moke191000', 64).hex());
74451624230fd656

> console.log(fnv.hash('moke191000', 64).dec());
8378127026255550038


回到顶部