解析dump的二进制流
获取全量集合的命令 O(N)
- hgetall
- lrange(0,-1)
- smembers
- zrange(0,-1)
目前获取全量的方法
- 存一份全量在memcache中
- 单独一个field存全量的序列化:占用内存多
改进的方法:dump之后在客户端解析
- dump命令 O(1)
- 解析过程从redis的单线程,转为客户端的多线程处理,充分利用了client的cpu资源
- 服务端压力降低
Redis数据类型
1. hash的两种实现
-
ziplist(所有kv长度小于64字节,且kv数量小于512时才使用):
- 保证在hashtable刚创建以及元素较少时,用更少的内存来存储,同时对查询的效率也不会受太大的影响
-
dict
2. sorted set的实现
-
ziplist
-
dict+ skiplist
3. list的实现
-
list
-
quicklist
4. set的实现
-
intset(数字,64bit,个数小于set-max-intset-entries 默认512)
- 当set中添加的元素都是整形且元素数目较少时,节省内存
-
dict