对redis来说,所有的key(键)都是字符串,所谓的5种数据结构是指针对value而言
1、Redis五种数据结构如下:
数据结构类型 | 说明 | 使用场景 | 常用方法 | 其他链接 |
---|---|---|---|---|
String字符串类型 | 1、redis中最基本的数据类型,一个key对应一个value。 2、是二进制安全的,意思是 redis 的 string 可以包含任何数据。如数字,字符串,jpg图片或者序列化的对象。 | 1.缓存: 经典使用场景,把常用信息,字符串,图片或者视频等信息放到redis中,redis作为缓存层,mysql做持久化层,降低mysql的读写压力。 2.计数器:redis是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落地到其他的数据源。 3.session:常见方案spring session + redis实现session共享, | get 、 set 、 del 、 incr、 decr | |
HashTables (哈希) | 是一个Mapmap,指值本身又是一种键值对结构,如 value={{field1,value1},......fieldN,valueN}} | 1.缓存: 能直观,相比string更节省空间的维护缓存信息,如用户信息,视频信息等。 | 所有hash的命令都是h开头的: hget 、hset 、 hdel 等 | |
LinkedLists(链表) | List 说白了就是链表(redis 使用双端链表实现的 List),是有序的,value可以重复,可以通过下标取出对应的value值,左右两边都能进行插入和删除数据。 | 1.timeline:例如微博的时间轴,有人发布微博,用lpush加入时间轴,展示新的列表信息。 | 使用列表的技巧
| |
Sets(集合) | 用来保存多个字符串的元素,但和列表不同的是集合中 1. 不允许有重复的元素 2.集合中的元素是无序的,不能通过索引下标获取元素 3.支持集合间的操作,可以取多个集合取交集、并集、差集。 | 1.标签(tag),给用户添加标签,或者用户给消息添加标签,这样有同一标签或者类似标签的可以给推荐关注的事或者关注的人。 2.点赞,或点踩,收藏等,可以放到set中实现 | 命令都是以s开头的: sset 、srem、scard、smembers、sismember | |
Zset 有序集合 | 1.Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。 2.不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 3.有序集合的成员是唯一的,但分数(score)却可以重复。 | 1.排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。 | 有序集合的命令都是 以 z 开头: zadd 、 zrange、 zscore |