【面试经典】redis 常见数据结构以及使用场景分析
1.String
常用命令: set,get,decr,incr,mget 等。
String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。 常规key-value缓存应用; 常规计数:微博数,粉丝数等。
2.Hash
常用命令: hget,hset,hgetall 等。
hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如我们可以 hash 数据结构来存储用户信息,商品信息等等。比如下面我就用 hash 类型存放了我本人的一些信息:
key=JavaUser293847
value={“id”: 1,“name”: “SnailClimb”,“age”: 22,“location”: “Wuhan, Hubei”
}
3.List
常用命令: lpush,rpush,lpop,rpop,lrange等
list 就是链表,Redis list 的应用场景非常多,也是Redis最重要的数据结构之一,比如微博的关注列表,粉丝列表,消息列表等功能都可以用Redis的 list 结构来实现。
Redis list 的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。
另外可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒的一个功能,基于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能高。
4.Set
常用命令: sadd,spop,smembers,sunion 等
set 对外提供的功能与list类似是一个列表的功能,特殊之处在于 set 是可以自动排重的。
当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。可以基于 set 轻易实现交集、并集、差集的操作。
比如:在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。这个过程也就是求交集的过程,具体命令如下:
sinterstore key1 key2 key3 将交集存在key1内
5.Sorted Set
常用命令: zadd,zrange,zrem,zcard等
和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。
举例: 在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息,适合使用 Redis 中的 Sorted Set 结构进行存储。
本文转自:
redis常见数据结构以及使用场景分析
【面试经典】redis 常见数据结构以及使用场景分析相关推荐
- Redis常见数据结构以及使用场景(微博)分析
1. String 常用命令: set,get,decr,incr,mget 等. String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字. 常规key ...
- php两个数组之间去重,php数组去重、魔术方法、redis常用数据结构及应用场景
一.用函数对数组进行去重的方法 1. arrau_unique函数的作用 移除数组中重复的值. 将值作为字符串进行排序,然后保留 每个值第一次 出现的健名,健名保留不变. 第二个参数可以选择排序方式: ...
- Redis的数据结构及应用场景
2019独角兽企业重金招聘Python工程师标准>>> 一. 谈谈对redis的理解,它的应用场景. Redis是一个key-value存储系统,它支持存储的value类型包括str ...
- Redis核心数据结构List应用场景-商品列表、缓存击穿、PV阅读量、抢红包、推送帖子、普通分布式锁、Redis可重入锁与红锁
List应用场景 Redis之List 一. Redis list命令实战 二.商品列表 高并发的淘宝聚划算实现技术方案 SpringBoot+Redis实现商品列表功能 二.缓存击穿 什么是缓存击穿 ...
- hashmap应用场景_Redis 5种数据结构 及使用场景分析
也当过面试官,面试过不少应聘者,因为是我自己招人自己用,所以我不会看应聘者造火箭的技术有多牛比,只看拧螺丝的手艺瓷不瓷实.毕竟以后是一个整体,拖了大家后腿团队都很难受. 面试的题目一般也不会太难,就像 ...
- redis各数据结构的使用场景
在介绍之前,先说明一点,字符串是redis最基础的数据结构,键都是字符串类型,所有下面讨论的数据结构是针对值value而言的. 字符串 缓存功能:set.get 计数:incr 共享session 限 ...
- Redis:redis通用命令;redis常见数据结构;redis客户端;redis的序列化
一.redis命令 1.redis通用命令 Redis 通用命令是一些 Redis 下可以作用在常用数据结构上的常用命令和一些基础的命令 常见的命令有: keys 查看符合模板的所有key,不建议在生 ...
- Redis的基本用法以及场景分析
Redis(Remote Dictionary Server) 简介: Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - va ...
- Redis未授权访问攻击场景分析与防御
主要从redis未授权访问入手,还原一些黑客的攻击场景,介绍一些常用的攻击方法和安全知识. 0x0 应用介绍 REmote DIctionary Server(Redis) 是一个由Salvatore ...
最新文章
- OSPF中virtual-link
- 笔记。------数组
- 阿里云服务器常见用语
- Android NDK开发之旅34 NDK 手把手带你入门直播技术
- 数据结构实验之图论九:最小生成树(Prim/Kruskal)
- Java Jdbc减少交互提升批量处理性能,到底该如何优化才好?
- Codeigniter CRUD代码快速构建
- leetcode 500. 键盘行(Java版)
- sql-bench mysql_MySQL性能测试(一)——RHEL 7.1, MySQL 5.6.25, sql-bench
- perl socket初步
- 一级指针易犯错误模型
- 数字电视输出标准规范和BT601/BT709/BT2020色域转换方法资料整理
- 推挽输出与开漏输出结构和原理详解
- 微软,招 Java 了!
- 数据压缩_任务五_预测误差均方值推导及最小二乘法
- win7打开计算机一片空白,Win7系统打开文件夹查看选项发现一片空白怎么办
- pip list outdated pacakge and update
- Xilinx SRIO_gen2关于时钟的问题
- 数据采集—数据库基础及采集
- SQL ifnull、nullif 等函数