nodejs fnv模块生成hash值

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

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

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

node.js 下有不少求哈希散列值的模块,本文用到的是 fnv-plusweb

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

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

 

使用:服务器

var fnv = require('fnv-plus');分布式

 

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

返回的这对象告诉你此散列值是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());
837812702625555003
相关文章
相关标签/搜索