赞
踩
【redis数据库存放数据的形式】key-value;
【redis的五种数据类型】String、Hash、List、Set、Zset(Sorted set);
(⚠️这里说的数据类型都是指value,key都是string类型的)
如图,redis核心对象redisObject有n个属性,核心属性type和encoding,type存储了redis中value中的具体类型,encoding存储了具体的编码方式。下文中的String类型如果存储数字类型的字符串的时候,可以进行数字运算,即当value类型为String时,encoding可能对应不止一种,存储数字类型的字符串时,encoding = int,存储普通字符串时,encoding = raw
使用场景:
常规key-value缓存应用。
常规计数:微博数、粉丝数
String类型注意事项:
String运行结果:
1、表示运行结果是否成功:
(integer)0 –> false 失败
(integer)1 –> true 成功
2、表示运行结果值
(integer)3 –> 3 3个
(integer)1 –> 1 1个
3、数据未获取到:(nil)等同于null
value是一个key-value的格式,这里为了区分redis的key,value中的key被叫做field
使用场景: 特别适合存储对象:存储部分变更数据,如用户信息等。
Hash类型注意事项:
存储多个数据,并对数据进入存储空间的顺序进行区分,底层使用双向链表存储结构实现
使用场景:
Twitter/微博 的关注列表、粉丝列表等(根据关注顺序展示的列表)
最新消息排行
消息队列(用push操作将任务存在List中,工作线程再用pop操作将任务取出来执行)
List类型注意事项:
与List存储结构完全相同,值是不允许重复的
使用场景:
Set提供的是一个类似List,即列表的功能,区别在于可以排重,所以当需要存储一个列表数据又不希望出现重复数据,Set是好选择;
提供了判断某个成员是否在一个Set集合内(List没有);
微博中共同关注、共同好友(将一个人的关注放入一个set集合,他的好友放入一个set集合,利用set的交集、差集、并集等功能实现);
和set一样,数据不重复的集合,区别在于Sorted Set额外提供了一个代表优先级(score)的参数来为成员排序;
Sorted Set 成员不可重复,但是score可以重复
使用场景:
存储一个班级同学的成绩:value可以是学生的学号;score就可以是他的考试得分,这样数据进入集合的时候,就可以进行一个天然排序;
做带权重的队列:普通消息score为1,重要消息score为2,工作线程可以按score的倒序来获取任务,让重要的任务先执行;
Sorted Set类型注意事项:
类型 | 特性 | 场景 |
---|---|---|
String(字符串) | 二进制安全 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M |
Hash(字典) | 键值对集合,即编程语言中的Map类型 | 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) |
List(列表) | 链表(双向链表) | 增删快,提供了操作某一段元素的API |
Set(集合) | 哈希表实现,元素不重复 | 1、添加、删除、查找的复杂度都是O(1) ;2、为集合提供了求交集、并集、差集等操作 |
Sorted Set(有序集合) | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 |
类型 | 类型亮点 |
---|---|
String | 就是正常存储一个简单的字符串,最常用,比如存储用户的token,key为userId,value为token |
Hash | 类似于java中的HashMap,可以存一组信息,比如关于人的姓名、年龄 |
List | 在于有先后顺序,适用于微博粉丝列表或者关注人列表展示这种(这种是按照你的关注顺序展示的) |
Set | 有交集、并集、差集操作(典型就是看微博或其他社交软件共同关注等),集合内成员还不重复 |
Sorted Set | Set基础上加上了分数,这样可以天然排序(比如把key为班级id,value为学生id,score为每个学生的分数,就可以天然排序了) |
对于redis五种数据类型的实战应用网上查到的总是千篇一律,自己在项目中确实用到的也比较少,以上表格是自己的一个理解,个人认为把握好每个类型拥有的命令,在实战中多思考,多延伸,如果后续项目中用到redis较多,样本比较丰富会再出一期切身的实战应用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。