redis数据结构-未完

321 阅读2分钟

数据类型

  • String
  • Hash
  • List
  • Set
  • Sorted set
  • Bit arrays (simply bitmaps)
  • HyperLogLogs
  • Streams

key

key的简单规则

  • 不建议过长的key

不仅消耗内存,数据查找过程计算成本也很高

  • key并不是越短越好,要有可读性

u1000flw 虽然可以代替 user:1000:followers ,微乎其微的空间节省缺牺牲掉了可读性

  • key最好统一命名规范

比如统一使用 :分割符号 或者使用 点. 下划线_ 横杠-都可以

  • The maximum allowed key size is 512 MB

String

List

List基于链表实现

List使用场景

链表特性:每次都以原先添加的顺序访问数据。这不需要任何SQL ORDER BY 操作,将会非常快,也会很容易扩展到百万级别元素的规模

  • 聊天系统

  • 进程间传递消息的队列

  • 博客系统评论,每篇博客设置一个List

  • 推特将用户发布的最新推文放入List

  • 用户主页 LRANGE 0 9 获取最新的十个

截取List

LTRIM命令记住最新的N个项目并丢弃所有最旧的项目

List的阻塞操作

非阻塞操作RPOP有以下缺点:

  • 强制Redis和客户端处理无用的命令(列表为空时的所有请求将不会完成任何实际工作,它们只会返回NULL)

  • 由于工作人员在收到NULL之后会等待一段时间,因此会增加项目处理的延迟。为了减小延迟,我们可以在两次调用RPOP之间等待更少的时间,从而扩大了问题编号1,即更多对Redis的无用调用

所以Redis提供了带超时时间的阻塞版本BRPOP BLPOP :仅当将新元素添加到列表中或用户指定的超时时间到时,它们才会返回到调用方到达

自动创建和删除Key

Lists, Streams, Sets, Sorted Sets 和 Hashes:

  • 为空时自动删除key和空集合 (不包括 Streams)
  • 放入时若没有key则自动创建key和集合