数据类型
- 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和集合