关于php redis的问题 hash结构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于php redis的问题 hash结构相关的知识,希望对你有一定的参考价值。

财富值不多了,要是采纳后面补上100!!=====
hash结构写入排行榜,field是用户id,value是用户的排名信息,比如score:98, ranking:1

按照名次的顺序进行hset,比如第一名先set,最后一名最后set,
最后后hgetall的时候取前三个field就是前三名

问题是::::
总排名人数小于500时,这样可以,可是总人数超过了500以后,hgetall取出的顺序不是按照我的写入顺序取出的!!??排名字段ranking是乱序的。取出的前三个field也不是前三名!!

之前查过,可能是hash-zipmap-max-entries这个默认设置512的原因,超过之后就转化为hashtable,是不是hashtable就无序了??求大神解答,在线等!。
ps,直接设置hash-zipmap-max-entries变大可以,但是超过1000貌似性能就会有问题了,我想问的是有没有不用设置hash-zipmap-max-entries的方法,并且让hash结构仍然有序

*nix系系统:
ES(Unix)
例子: IvS7aeT4NzQPM
说明:Linux或者其他linux内核系统中
长度: 13 个字符
描述:第1、2位为salt,例子中的\'Iv\'位salt,后面的为hash值
系统:MD5(Unix)
例子:$1$12345678$XM4P3PrKBgKNnTaqG9P0T/
说明:Linux或者其他linux内核系统中
长度:34个字符
描述:开始的$1$位为加密标志,后面8位12345678为加密使用的salt,后面的为hash
加密算法:2000次循环调用MD5加密
系统:SHA-512(Unix)
例子:$6$12345678$U6Yv5E1lWn6mEESzKen42o6rbEm
说明:Linux或者其他linux内核系统中
长度: 13 个字符
描述:开始的$6$位为加密标志,后面8位为salt,后面的为hash
加密算法:5000次的SHA-512加密
系统:SHA-256(Unix)
例子:$5$12345678$jBWLgeYZbSvREnuBr5s3gp13vqi
说明:Linux或者其他linux内核系统中
长度: 55 个字符
描述:开始的$5$位为加密标志,后面8位为salt,后面的为hash
加密算法:5000次的SHA-256加密
系统:MD5(APR)
例子:$apr1$12345678$auQSX8Mvzt.tdBi4y6Xgj.
说明:Linux或者其他linux内核系统中
长度:37个字符
描述:开始的$apr1$位为加密标志,后面8位为salt,后面的为hash
加密算法:2000次循环调用MD5加密
windows系统:
windows
例子:Admin:b474d48cdfc4974d86ef4d24904cdd91
长度:98个字符
加密算法:MD4(MD4(Unicode($pass)).Unicode(strtolower($username)))
mysql
系统:mysql
例子:606717496665bcba
说明:老版本的MySql中
长度:8字节(16个字符)
说明:包括两个字节,且每个字的值不超过0x7fffffff
系统:MySQL5
例子:*E6CC90B878B948C35E92B003C792C46C58C4AF40
说明:较新版本的MySQL
长度:20字节(40位)
加密算法:SHA-1(SHA-1($pass))
其他系统:
系统:MD5(WordPress)
例子:$P$B123456780BhGFYSlUqGyE6ErKErL01
说明:WordPress使用的md5
长度:34个字符
描述:$P$表示加密类型,然后跟着一位字符,经常是字符‘B’,后面是8位salt,后面是就是hash
加密算法:8192次md5循环加密

系统:MD5(phpBB3)
说明:phpBB 3.x.x.使用
例子:$H$9123456785DAERgALpsri.D9z3ht120
长度:34个字符
描述:开始的$H$为加密标志,后面跟着一个字符,一般的都是字符‘9’,然后是8位salt,然后是hash 值
加密算法:2048次循环调用MD5加密
系统:RAdmin v2.x
说明:Remote Administrator v2.x版本中
例子:5e32cceaafed5cc80866737dfb212d7f
长度:16字节(32个字符)
加密算法:字符用0填充到100字节后,将填充过后的字符经过md5加密得到(32位值)
md5加密
标准MD5
例子:c4ca4238a0b923820dcc509a6f75849b
使用范围:phpBB v2.x, Joomla 的 1.0.13版本前,及其他cmd
长度:16个字符
其他的加salt及变形类似:
md5($salt.$pass)
例子:f190ce9ac8445d249747cab7be43f7d5:12
md5(md5($pass))
例子:28c8edde3d61a0411511d3b1866f0636
md5(md5($pass).$salt)
例子:6011527690eddca23580955c216b1fd2:wQ6
md5(md5($salt).md5($pass))
例子: 81f87275dd805aa018df8befe09fe9f8:wH6_S
md5(md5($salt).$pass)
例子: 816a14db44578f516cbaef25bd8d8296:1234
参考技术A 该回答不包含文字内容 参考技术B 晕 ,别人写的注册不一定就适合你啊

Redis-PHP实战篇—Redis 数据结构使用场景

以上是关于关于php redis的问题 hash结构的主要内容,如果未能解决你的问题,请参考以下文章

Redis-PHP实战篇—Redis 数据结构使用场景

关于Redis的十个高频面试问题

03 关于 zipmap

Redis 中的 Geohash 与 php

Redis 之hash集合结构及命令详解

四Redis源码数据结构之哈希表Hash