Redis笔记,涵盖了 Redis 所有知识点,拿走不谢( 四 )

 

Redis笔记,涵盖了 Redis 所有知识点,拿走不谢

文章插图
 
数据存储原理是什么?
  1. hash槽存储原理,所有的键根据哈希函数(CRC16[key]&16383)映射到0-16384槽内 。
  2. 当向redis集群中插入数据时,首先将key进行计算.之后将计算结果匹配到具体的某一个槽的区间内,之后再将数据set到管理该槽的节点中 。
 
Redis笔记,涵盖了 Redis 所有知识点,拿走不谢

文章插图
 
二十一、keys命令
  1. keys命令可以列出所有符合给定模式 pattern的key
  2. 单因为redis是单线程的,使用keys命令会导致线程阻塞一段时间,线上服务停顿,知道指令执行完毕,服务才能恢复,如列出10亿个相同前缀的key时,影响特别大 。
  3. 可以使用scan指令代替,但会有一定重复,通过代码去重就好 。
二十二、redis常见功能
  1. 使用String类型缓存用户登录状态
  2. 使用Hash类型缓存一张配置表、字典表
  3. 使用setnx+expire+Lua实现分布式锁
  4. 使用List类型实现高性能的分页(如文章的评论列表)、简单的消息队列功能
  5. 使用Set类型实现分布式全局去重
  6. 使用Zset类型实现热榜、排行榜、延时队列功能
  7. 使用pub/sub实现简单的发布&订阅功能(不可持久化)
  8. 使用Stream类型实现有消费组的发布&订阅功能(可持久化)
  9. 使用Bitmap(位图)实现签到、布隆过滤器功能
  10. 使用HyperLogLog实现的不精确的去重统计,如PV(页面访问)、UV(用户访问)
  11. 使用Geospatial保存地理位置,计算位置距离,实现附近的人功能
  12. 使用Pipeline(管道)把一批命令打包好发送到redis一次性执行,减少客户端与 redis 的通信次数来实现降低往返延时时间
  13. 使用Lua脚本保证原子性,实现秒杀场景扣除商品库存
  14. 使用Set类型实现标签系统




推荐阅读