目录
目录
1.数据类型
1.1 字符串String
String是最常用的数据类型格式,普通的key-value都归结为这一类,value值不仅可以是String,也可以是数字、集合。类似JAVA中的String类型,可存入数字相互转换,也可以存储json字符串等。
表达式理解:Map<String,String>
使用场景:
通过访问用户的次数为依据封锁id,可以将用户的访问次数以String类型记录在redis中,并通过incr操作,每次访问都自增一次。
其他场景:
常用命令:
get,set,incr,decr,mget
1.2 字典——hash
类比JAVA中的Map类型,是一个String类型的field和value的映射表,hash特别适合用于存储对象。
表达式理解:Map<String , Map<String,String>>
应用场景:
例如 用户包含id,name,address等属性,当需要使用redis存放用户信息时,可以使用hash。
其他场景:可参考 http://t.csdnimg.cn/YZHqk
常用命令:
hget,hset,hgetall
1.3 列表——list
类比JAVA中的ListkedList,有序,可重复的集合
表达式理解:Map<String,List<String>>
应用场景:
最新消息排行;消息队列。利用List的push操作,将任务存储在List中,然后工作线程再用pop操作将任务取出进行执行。
其他场景:
1. 朋友圈点赞,要求按照点赞顺序现实点赞好友的信息;
我们可以完整的将这个模型用list实现,发朋友圈的人用key表示,点赞的人为value,点赞操作对应rpush,取消点赞操作可以对应lrem。评论信息可以通过list去查询关系型数据库。
2. 在一般要求顺序的业务中,一般都用list来实现。
常用命令:
lpush,rpush,lpop,rpop,lrange,blpop(阻塞版)等;
1.4 集合——Set
类比JAVA中的HashSet,存储无序不能重复的数据,Redis本身提供了交集,并集,差集等操作。
表达式理解:Map<String,Set<String>>
应用场景:
set 和 list 比较类似,特殊之处是set可以自动排重,同时还提供了某个成员是否存在于一个set内的接口,这个在list也没有。
其他场景:
1、标签:比如我们博客网站常常使用到的兴趣标签,把一个个有着相同爱好,关注类似内容的用户利用一个标签把他们进行归并。
2、共同好友功能,共同喜好,或者可以引申到二度好友之类的扩展应用。
3、统计网站的独立IP。利用set集合当中元素唯一性,可以快速实时统计访问网站的独立IP。
常用命令:
sadd,srem,spop,smembers,sunion等;
1.5 有序集合——zSet
类比JAVA中的TreeSet,存储的数据有顺序,常用作排行榜等应用场景;
表达式理解:Map<String,Sort Set<>String>
应用场景:
使用场景:zset的使用场景与set类似,区别是set不是有序的,而zset可以通过用户额外提供的一个优先级(score即分值)参数来为成员排序,插入后自动排序。
例如:将所有评论按发表时间为score存储,可以方便获取最新发表的评论;全班同学成绩的SortedSets,value可以是同学的学号,而score就可以是其考试得分,这样数据插入集合的,就已经进行了天然的排序。
另外还可以用Sorted Sets来做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。
其他场景:http://t.csdnimg.cn/h7cMd
常用命令:
zadd,zrange,zrem,zcard,zcount等
本章博客仅用来记录自己当前学习的笔记,上面图片引用至:http://t.csdnimg.cn/qRzZe博文。
本章博客分享结束,如果能帮助到你,那这篇博文就有意义,感谢你的驻留。