Redis都有哪些数据类型?分别在那些场景下比较合适
String
这个是最基本的类型,就是普通的Set和Get,做简单的key-value缓存
Hash
这个是类似于Map的一种结构,这个一般就是可以将结构化的数据,并加入一个对象(前提是这个对象中没有嵌套其他的对象)给缓存到Redis中,然后每次读写缓存的时候,可以就操作Hash中的某个字段
List
有序列表,这个可以有很多花样
比如可以通过List存储一些列表型的数据结构,类似于粉丝列表,文章的评论列表之类的东西
比如可以哦通过lrange命令,就是从某个元素开始读取多少个元素,可以基于List实现分页查询,这个是很棒的一个功能,基于redis实现简单的高性能分页,可以做类似与微波那种下拉不断分页的东西,性能高,一页一页走
比如可以搞个简单的消息队列,从List头放进去,从list尾弄出来
Set
无序集合,自动去重
直接基于Set将系统里需要去重的数据扔进去,自动去重
可以基于Set玩交集,并集,差集的操作,可以将两个人的粉丝列表整合起来,做一个交集,看看两个人的共同好友
Sorted Set
排序Set,去重但是可以排序,写进去的时候给一个分数,自动根据分数排序,这个可以玩很多花样,最大的特点就是有个分数可以自定义排序规则
比如你要是想根据时间对数据进行排序,那么可以写入进去的时候用某个时间作为分数,Redis可以根据时间自动排序
排行榜操作:将用户以及对应的分数写入进去,zadd board socre username,接着zrevrange board 0 99,就可以获取排名前100的用户,zrank board username ,可以看到用户在排行榜里的排名