redis的几种数据结构及使用场景
Posted colinhan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis的几种数据结构及使用场景相关的知识,希望对你有一定的参考价值。
redis以key-value方式存储,支持诸多种数据结构:String,Hash,List,Set,Sorted Set
1.String字符串,应用场景最多的数据结构,其他四种是在此基础上实现的,value可以使简单的字符串、xml、json、数字、二进制。
键值最大不允许超过512m,从性能上建议不要超过1m。
应用场景:
- 缓存;快速读取,支持高并发,可持久化(AOF和RDB),支持一些函数(get、set、incr、decr、len、append、getset)
- 计数器;快速读取,incr实现
- 共享session;解决分布式用户登录问题
- 限流
AOF,没收到一条写命令,都会通过write函数追加到持久化的文件后,类似mysql的binlog。
RDB,周期性地以快照的方式将数据同步到硬盘文件,周期可设 always(降低服务器性能),everysec(建议),no。
2.Hash,指的是键值本身也是一种键值对的存储结构,将结构化的信息打包成hashmap,例如key:{{field1:value1},{field2:value2},{field3:value3},{field4:value4}...}
相比string减少了反序列化和序列化的消耗,也不适用于一些并发修改value中某个value的操作。
应用场景:
- 例如门店/商品/用户信息的管理操作,但是不同于关系型数据库的结构完全结构化,hash的结构是稀疏的,没法做到级联查询。
3.List列表,双端链表实现,可以使用list的一些特性,例如*push的方式塞入,pop的方式取出,可以读取某个范围的元素,也可以充当队列使用。有序且可重复。
应用场景:
- 文章、任务列表
- 消息队列 lpush+brpop
- 队列 lpush+rpop,轻量级,没有重试、重放等机制
- 栈 lpush+lpop
- 有限集合 lpush+ltrim
4.Set无序集合
应用场景:
- 标签 sadd
- 好友 sadd
- 生成随机数 spop/srandmember
5.Sorted Set有序集合
应用场景:
- 排行榜
参考:https://www.runoob.com/redis/redis-tutorial.html
以上是关于redis的几种数据结构及使用场景的主要内容,如果未能解决你的问题,请参考以下文章