dict 学习
This commit is contained in:
parent
1ab21a5223
commit
d7c061c9a4
@ -2,6 +2,8 @@
|
|||||||
字典是redis数据库最基本的结构,其本质结构是hash,用来存储键值对的一种数据结构,Redis本身就是K-V数据库,
|
字典是redis数据库最基本的结构,其本质结构是hash,用来存储键值对的一种数据结构,Redis本身就是K-V数据库,
|
||||||
整个数据库就是用字典存储的,对于Redis数据库的增、删、改、查操作,实际上都是对字典结构的操作。
|
整个数据库就是用字典存储的,对于Redis数据库的增、删、改、查操作,实际上都是对字典结构的操作。
|
||||||
|
|
||||||
|
## hash函数
|
||||||
|
|
||||||
对于字典来讲,计算key的hash比较重要,下面是Redis内核里面使用的计算的hash方法: [siphash](./siphash.md)
|
对于字典来讲,计算key的hash比较重要,下面是Redis内核里面使用的计算的hash方法: [siphash](./siphash.md)
|
||||||
|
|
||||||
```c
|
```c
|
||||||
@ -10,7 +12,12 @@ uint64_t dictGenHashFunction(const void *key, size_t len) {
|
|||||||
return siphash(key,len,dict_hash_function_seed);
|
return siphash(key,len,dict_hash_function_seed);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
`dictGenHashFunction`函数的主要作用是将任意长度的字符串,计算siphash的值,siphash是一个无符号整型数据。
|
||||||
|
在Redis当中将任意key转换为无符号整数类型,当作hash结构的下表使用。
|
||||||
|
|
||||||
|
## hash冲突
|
||||||
|
|
||||||
|
Redis使用hash结构保存数据,那么无法忽略的一个问题就是hash冲突。
|
||||||
|
|
||||||
|
|
||||||
# 基本操作
|
# 基本操作
|
||||||
|
@ -36,4 +36,3 @@ SipHash算法的特点:
|
|||||||
安全性也受到输出大小的限制。特别是,当SipHash被用作MAC时,如果t是该标签的字节级别大小,盲目尝试2s标签的攻击者将以2s-t的概率成功。
|
安全性也受到输出大小的限制。特别是,当SipHash被用作MAC时,如果t是该标签的字节级别大小,盲目尝试2s标签的攻击者将以2s-t的概率成功。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user