Redis数据结构略解
简单说明
Redis是key-value的数据库,key一般为String,value多种多样:
- String
- Hash
- List
- Set
- SortedSet
以上为基本类型,以下为特殊类型
- GEO
- BitMap
- HyperLog
Key的层级
Redis的key允许多个单词形成层级,单词之间以:
隔开,示例如下:
项目名:业务名:类型:id
操作命令
1 | help @group #查看对应的类型的命令 |
通用命令
1 | keys <pattern> #查看符合的key,太多单线程会阻塞 |
String命令
又根据字符串实际格式,分为三类:
- string
- int
- float
不超过512m
1 | set <key> <value> [nx] [ex time] #添加值 |
Hash命令
与String的区别:String是将对象序列化成JSON存储,无法修改某个字段。而Hash则是将每个字段单独存储,可以单独CRUD
1 | hset <key> <filed> <value> [nx] #对某个对象的字段添加 |
List命令
- 有序
- 可重复
- 操作快
- 查询一般
1 | lpush <key> <value> [value ...] |
Set命令
- 无序
- 不可重复
- 查找快
- 支持并交差集等
1 | sadd <key> <value> #添加元素 |
SortedSet命令
底层实现是一个跳表加Hash
常应用在排行榜
- 可排序
- 不重复
- 查询快
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16zadd <key> <score> <value> #添加一个元素或多个元素到集合中,若存在更新score
zrem <key> <value> #移除元素
zscore <key> <value> #获取score值
zrank <key> <value> #获取排名
zcard <key> #获取个数
zcount <key> <min> <max> #统计[min,max]范围的个数
zincrby <key> <increment> <value> #指定元素自增
zrange <key> <min> <max> #按照score排名,获取排名在[min,max]的元素
zrangebyscore <key> <min> <max> #按照score,获取分数在[min,max]的元素
#在中间加入rev,即反转,如zrevrange <key> <min> <max> #反向排序
zinter <key1> <key2> #两个集合的交集
zdiff <key1> <key2> #差集
zunion <key1> <key2> #并集
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 lnpbqc!