1 慢查询:
慢查询是一个先进先出的队列。固定长度的,但执行命令超过特定配置则会进入该队列。保存在内存中。 slowlog-max-len ,默认值128。
slowlog-log-slower-than: 慢查询阈值,单位是微秒。等于0 则所有命令都进入慢查询。默认值10000微秒。
2 pipeline:
一次网络一次命令 pipelibe:一次网络N加命令。
将一次请求一次命令,封装成一次请求,若干条命令,减少了网络IO的开销。
redis命令时间都是微秒级别的,所以主要控制的还是网络IO的时间。
pipeline每次的条数也要控制,提高批量的效率,但是要控制。
3 bitmap: 位图
bitmap底层使用string作为数据结构的,一种统计二值状态的数据结构。String类型会保存为二进制的字节数组。redis把字节数组的每个bit保存起来,可以看成是一个bit数组。
setbit key offset value 对bit字节数组的某个下表进行写值,bitmap的偏移量是从0开始的,当对一个bit为进行写时,该值变成1。bitcount可以实现统计1的个数。使用场景有 考勤卡。
bitmap只统计用户 的二值状态。记录海量数据时很很好的节省空间。
setbit a 100 1 那1到100之间默认填充0 getbit a 100 返回1
4 hyperloglog
本质还是字符串。极小的空间来完成数据统计。是一种用来统计基数的数据集合,当数据集合非常大时,他计算数据的空间还是固定的,非常小。每个hyperloglog只需要消耗12KB,但是可以消耗2的64次的数据。相比较数据量越大越消耗内存的set hash,hyperloglog很节省空间。
pfadd key element 添加元素
pfcount key 计算独立总数
5 GEO
主要用来计算地理位置信息。
geoadd 增加地理位置信息。
一辆车对应一组经纬度,并且随着车的移动响应的经纬度也发生变化。这种数据模式就是一个key 就是车,value就是一组经纬度。hash虽然很符合key value形式的数值,但是要进行范围查询,hash不适合范围查询,所以不合适。
sorted set也支持key value的数据记录模式。key是sorted set的元素,value是权重分数。sorted set可以根据元素的权重排序,支持范围查询。实际上GEO的底层数据结构就是sorted set。