redis五种数据结构及使用场景
string(字符串)
- 存储最简单的key-value结构。
- value可以是字符串、整数或者浮点数。
- 可以对整个字符串或者字符串的一部分执行操作;
- 对整数和浮点数执行自增或者自减操作。
使用场景:
- 常规key-value缓存应用;
list(列表)
- 一个链表,链表上的每个节点都包含了一个字符串,字符串可以重复;
- 可以从链表的两端推入或者弹出元素;
- 根据偏移量对链表进行修剪;
- 读取单个或多个元素;
- 根据值查找或者移除元素。
使用场景:
- 最新消息排行等功能;
- 消息队列;
- 关注列表,粉丝列表;
set(集合)
- 包含字符串的无序收集器,并且被包含的每个字符串都是独一无二,各不相同的,即不能重复;
- 可以添加、获取、移除单个元素;
- 检查一个元素是否存在于集合中;
- 计算交集、并集、差集;
- 从集合里面随机获取元素。
使用场景:
- 共同好友,共同喜好,二度好友;
- 统计网站访问IP(利用唯一性,统计访问网站的所有独立IP);
- 好友推荐(好友推荐时,根据tag求交集,大于某个阈值就可以推荐);
hash(散列)
- 包含键值对的无序散列表,键不能重复;
- 可以添加、获取、移除单个键值对;
- 获取所有键值对。
使用场景:
- 存储用户信息(能单独修改用户某一属性信息);
zset(有序集合)
- 有序集合的键被称为成员,每个成员都是各不相同的;
- 而有序集合的值被称为分值,分值必须为浮点数;
- 有序集合是字符串成员与浮点数分值之间的有序映射,元素的排列顺序由分值的大小决定;
- 可以添加、获取、删除单个元素;
- 根据分值范围或者成员来获取元素;
- 有序集合是redis里面唯一一个既可以根据成员访问元素(这一点和散列一样),又可以根据分值以及分值的排列顺序来访问元素的结构;
使用场景:
- 排行版;
- 带权重的消息队列;
redis五种数据结构及使用场景的更多相关文章
- redis 五种数据结构详解(string,list,set,zset,hash)
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
- 2.Redis五种数据结构
2.Redis五种数据结构2.1 预备2.1.1 全局命令2.1.2 数据结构和内部编码2.1.3 单线程架构2.2 字符串2.2.1 命令2.2.2 内部编码2.2.3 典型使用场景2.3 哈希2. ...
- 【Redis】redis 五种数据结构详解(string,list,set,zset,hash)
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
- Redis(一)、Redis五种数据结构
Redis五种数据结构如下: 对redis来说,所有的key(键)都是字符串. 1.String 字符串类型 是redis中最基本的数据类型,一个key对应一个value. String类型是二进制安 ...
- redis 五种数据结构详解(string,list,set,zset,hash),各种问题综合
redis 五种数据结构详解(string,list,set,zset,hash) https://www.cnblogs.com/sdgf/p/6244937.html redis 与 spring ...
- redis五种数据类型的使用场景
string 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...
- Redis五种数据结构(Windows Server)
1.Redis的五种数据结构 这里推荐大家在命名redis的key的时候最好的加上前缀,并且使用 :来分割前缀 ,这里在使用可视化工具查看的时候就比较好区分,比如我的的前缀是 Demo:test:(一 ...
- Redis 五种数据结构详解(string,hash,list,set,zset)
一.五种数据结构: 1. String--字符串 String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候e ...
- Redis五种数据结构简介
Redis五种结构 1.String 可以是字符串,整数或者浮点数,对整个字符串或者字符串中的一部分执行操作,对整个整数或者浮点执行自增(increment)或者自减(decrement)操作. 字符 ...
随机推荐
- 你真的了解View的坐标吗?
闲聊 View,对我们来说在熟悉不过了,从接触 Android 开始,我们就一直在接触 View,界面当中到处都是 View,比如我们经常用到的 TextView,Button,LinearLayou ...
- idapython 开发
调试方法 使用 pydevd 然后在需要调试处加入调试代码 GetOperandValue 作用 参数1: ea 虚拟地址 参数2: 操作数号 返回指令的操作数的被解析过的值 文档 def GetOp ...
- cookie implements session
cookie实现会话 服务器调用response.addCookie()设置set-cookie响应头后,浏览器收到这个响应头与数值后,会将它以文件的形式存储于本地PC上.当浏览器再次访问同一Web服 ...
- 团队项目个人进展——Day04
一.昨天工作总结 冲刺第四天,昨天继续忙着整理数据结构与算法的知识,在项目上看了看有关视频,学习了有关视图的地方和文档说明 二.遇到的问题 无 三.今日工作规划 学习并实现地图的放大与缩小
- Jmeter入门--性能测试实战
测试需求:测试20个用户访问https://www.baidu.com在负载达到30QPS时的平均响应时间. QPS:QueryperSecond,每秒查询率.一台查询服务器每秒能够处理的查询次数.在 ...
- Linux setenforce命令详解[SeLinux操作]
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统. 关闭SELinux 临时生效: 命令临时 ...
- VMware下 CentOS 连接外网问题(笔记)
虚拟机连接外网有三种模式.桥接.Nat.Host-Only.三者的区别,详见 实例讲解虚拟机3种网络模式(桥接.nat.Host-only) 使用虚拟机连接外网时,一定要充分考虑本地的网络环境!!! ...
- JavaScript动画
早期的JS动画 早期的JS循环动画主要是通过setInterval/setTimeout实现的 function jump() { console.log("我跳了一下"); } ...
- 如何处理高并发情况下的DB插入
1. 我们需要接收一个外部的订单,而这个订单号是不允许重复的 2. 数据库对外部订单号没有做唯一性约束 3. 外部经常插入相同的订单,对于已经存在的订单则拒绝处理 对于这个需求,很简单我们会用下 ...
- HTML5新增和废弃的标签
一.废弃的标签 以下的 HTML 4.01 元素在HTML5中已经被删除,虽然浏览器为了兼容性考虑都还支持这些标签,但建议使用新的替代标签,矛盾的是老浏览器对新标签的支持度又不够,视项目的受众对象而定 ...