常用的数据类型:
String,Hash,List,Set,Sorted Set
1、String数据结构是简单的key-value类型,value其实不仅是String,也可以是数字
常用命令:get,set,incr,decr,mget
使用场景:计数,微博数,浏览数,粉丝数
实现方式:String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算
2、Hash
常用命令:hget,hset,hgetall
使用场景:存储部分变更数据,如用户信息等
实现方式:这个Hash的成员比较少时,Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,当数量增大时,才会采用
3、List
常用命令:lpush,rpush,lpop,rpop.lrange
使用场景:消息队列系统,使用list可以构建队列系统,使用sorted set 甚至可以构建有优先级的队列系统
比如:将redis作为日志收集器
多个端点将日志信息写入redis,然后一个worker统一将所有的日志写到磁盘中
4、Set
常用命令:sadd,spop,smembers,sunion
应用场景:set对外提供的功能与list类似时一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据,set是一个很好的选择。
在微博应用中,可以用一个所有关注人存在一个集合中,将其所有粉丝存在一个集合,redis提供交集,并集,差集的操作,可以非常方便实现共同关注,共同喜好,二度好友
5、sorted set
常用命令:zadd,arange,zrem,zcard
使用场景:和set是相似的,区别是sorted set可以通过用户额外提供一个优先级score的参数进行排序