2017-4-20/Redis的数据结构及应用场景
| 数据类型 | 应用场景 |
| String | String是最常用的一种数据类型,普通的key/value存储都可以归为此类。 |
| List | 关注列表、粉丝列表、消息队列等。 |
| Set |
Set提供一个与 List类似的列表功能,特殊之处在于Set会自动排序、去重,当需要存储一个列表数据,又不希望有重复数据时,Set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
①使用Set存储一些集合性的数据,比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合;
②可以对集合取交集、并集、差集,应用到好友推荐、共同关注等。
③还可以利用唯一性,统计访问网站的所有独立IP。
|
| SortedSet | SortedSet与Set的使用场景类似,是不允许重复项的String集合。
①SortedSet可以通过提供一个优先级(score)的参数为成员排序,并且是插入有序的,即自动排序,可以应用于积分排行榜等。
②如果需要一个有序且不重复的集合列表,可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。
③用SortedSet做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务,让重要的任务优先执行。
|
| Hash | 存储一个学生信息对象数据,字段包括:id、姓名、班级、年龄等,通过id可以获取/修改任意的字段。 |
- String类型是二进制安全的,可以用来缓存一些静态文件,如图片、视频、css文件等。支持incr操作,可以用作计数器,比如统计网站访问次数等。
- 微博中“关注、粉丝”、论坛中所有回帖的ID用的就是list列表,还有消息队列,也是列表。
- Set可以快速查找元素是否存在,用于记录一些不能重复的数据。例如: 在网站注册账号时,用户名不能重复,使用Set记录注册用户,如果注册的用户名已经存在于Set中,就拒绝该用户注册。或者用于记录做过某些事情。例如: 在某些投票系统中,每个用户一天只能投票一次,就可以用Set来记录某个用户的投票情况。
- Set能做的事Sorted Set也能做,Sorted Set还能完成一些Set不能做的事情。例如:使用Sorted Set构建一个具有优先级的队列。
- Hash适用于存储对象,比如把用户的信息存到hash里,以用户id为key,用户的详细信息为value。
2017-4-20/Redis的数据结构及应用场景的更多相关文章
- 细说Redis(一)之 Redis的数据结构与应用场景
这一篇文章主要介绍Redis的数据结构与应用场景 NOSQL之Redis Redis是一款由key-value存储的软件.说起NOSQL,有文档型.键值型.列型存储.图形数据库.其中,在简单的读写性能 ...
- php数组去重、魔术方法、redis常用数据结构及应用场景
一.用函数对数组进行去重的方法 1.arrau_unique函数的作用 移除数组中重复的值. 将值作为字符串进行排序,然后保留每个值第一次出现的健名,健名保留不变. 第二个参数可以选择排序方式: SO ...
- 深度分析:Redis 的数据结构及其使用场景分析,原来这么简单?
Redis基础数据结构有哪些? 一.String(字符串) 在任何一种编程语言里,字符串String都是最基础的数据结构, 那你有想过Redis中存储一个字符串都进行了哪些操作嘛? 在Redis中St ...
- Redis的数据结构与应用场景
一.Redis简介 Redis 是一个开源的使用 ANSI C 语言编写.遵守 BSD 协议.支持网络.可基于内存.分布式.可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API ...
- redis的数据结构、使用场景、持久化方式以及常见面试问题
一.redis中的数据结构 1.字符串(String) SET key value //存入字符串键值对 MSET key value[key value...] //批量存储字符串键值对 SETNX ...
- Redis各种数据结构性能数据对比和性能优化实践
很对不起大家,又是一篇乱序的文章,但是满满的干货,来源于实践,相信大家会有所收获.里面穿插一些感悟和生活故事,可以忽略不看.不过听大家普遍的反馈说这是其中最喜欢看的部分,好吧,就当学习之后轻松一下. ...
- Redis学习——数据结构介绍(四)
一.简介 作为一款key-value 的NoSQL数据库,Redis支持的数据结构比较丰富,有:String(字符串) .List(列表) .Set(集合) .Hash(哈希) .Zset(有序集合) ...
- Redis的数据结构
Redis的数据结构 redis是一种高级的key-value的存储系统,其中value支持五种数据类型. 字符串(String) 哈希(hash) 字符串列表(list) 字符串集合(set) 有序 ...
- [转]Redis内部数据结构详解-sds
本文是<Redis内部数据结构详解>系列的第二篇,讲述Redis中使用最多的一个基础数据结构:sds. 不管在哪门编程语言当中,字符串都几乎是使用最多的数据结构.sds正是在Redis中被 ...
随机推荐
- Transaction之EF
了解Entity Framework中事务处理 Entity Framework 6以前,框架本身并没有提供显式的事务处理方案,在EF6中提供了事务处理的API. 所有版本的EF,只要你调用SaveC ...
- Linux下 网卡测速
参考: How do I verify the speed of my NIC? Linux下 网卡测速 命令: $ sudo ethtool eth0 Settings for eth0: Supp ...
- Sublime Text 查找时排除指定的文件夹或文件
Sublime Text 查找时排除指定的文件夹或文件 Ctrl + Shift + F这组快捷键可以调出 Sublime Text 的查找替换窗口,里边有一栏 Where,可以做一些高级设置:d:\ ...
- JavaScript(ES5)知识点梳理
数据类型(null undefined number string boolean object)数据类型之间的相互转化(Boolean Number String parseInt parseFlo ...
- Q-Q图
来自:https://mp.weixin.qq.com/s/_UTKNcOgKQcCogk2C2tsQQ 正负样本数据集符合独立同分布是构建机器学习模型的前提,从概率的角度分析,样本数据独立同分布是正 ...
- SqlDataAdapter介绍【五】
一.常用方法介绍 1. SqlDataAdapter有两个有用的方法,分别为 fill 和 update. 1. fill 方法 fill 方法是用来填充 DataSet 的.也就是,把数据库中的运送 ...
- js_计时器之setInterval
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 《剑指offer》第五十二题(两个链表的第一个公共结点)
// 面试题52:两个链表的第一个公共结点 // 题目:输入两个链表,找出它们的第一个公共结点. #include <iostream> #include "List.h&quo ...
- 学习笔记25—python基本运算法则
1.矩阵的点乘: a*b, 矩阵乘法:dot(a*b),矩阵的次方:a**num (num = 2,表示2次)2.数组的并集,交集: >>> a = [1,2,3] >> ...
- Debug记录(1)
今天下午在给nRF52832写程序时,莫名遇到了这个错误 错误id是一个很奇怪的数. 原代码如下: static void timers_init(void) { uint32_t timer_err ...