谈谈redis的特性以及使用场景
ok?先从String开始讲:
String:
这是最简单的类型,就是普通的get和set,做简单的KV缓存。
但是在真实的开发环境中,很多men可能会吧很多复杂的结构也统一转成String去储存使用,比如有的men他就喜欢把List转换为JSONString进行储存,拿出来的时候再进行反序列什么的。
String的实际应用场景比较广泛的有:
缓存功能:String字符串是最常用的数据类型,不仅仅是redis,各个语言都是最基本类型。因此,使用redis进行缓存,使用其他数据库作为储存层,利用Redis支持高并发的特点,可以大大加快系统的读写速度,以及降低后端数据库的压力。
计数器:很多系统都会使用redis作为系统的实时计数器,它可能快速的实现计数和查询的功能。最终的数据可以在特定的时间在数据库或者其他储存介质进行永久性保存。
共享用户Session:用户重新刷新界面,可能都需要访问数据进行重新登录,或者访问页面缓存cookie,但是可以使用redis对用户的session进行集中管理,在这种模式之下只要保证Redis的高可用,每次用户Session的更新和获取都可以快速完成,大大的提高效率。
Hash:
这是一种类似于Map的结构,它可以把结构化的数据,比如说一个对象缓存在Redis中,然后每次进行读写缓存的时候,可以操作Hash里的某个字段。
List:
有序列表,这个可是玩出很多花样的。
比如说可以通过List存储一些列表型的数据结构,类似于粉丝列表、文章的评论列表之类的东西。
比如说可以通过irange命令,读取某个闭区间里面的元素,可以基于List实现分页查询,基于Redis实现简单的高性能分页,可以做类似于微博那种下拉就不断分页的功能,性能高,就一页一页的走。
比如说可以搞个简单的消息队列,从List头部怼进去,从List屁股那里拿出来。
消息队列:Redis的链表结构,可以轻松的实现阻塞队列,可以使用左进右出的命令组来完成队列的设计。
Set:
Set是无序集合,会自动去重的那种。
直接基于Set把系统里需要去重的数据扔进去,自动就给去重了,如果你要对一些数据进行快速全局的去重,当然也可以基于JVM内存里的HashSet进行去重,但是如果你的系统部署在多台机器上呢?就得基于Redis进行全局的Set去重。
可以基于Set玩 交集、并集、差集,比如说可以把两个人的好友列表整出来,看下两人共同好友是谁。
SortedSet:
SortedSet是排序的Set,去重并且可以排序,写入的时候给一个分数,自动根据分数排序。
有序集合的使用场景与集合类似,但是set集合不是自动有序的,而sorted Set可以根据分数进行成员间的排序,而且是插入时就排序好。所以当你需要一个有序且不重复的集合列表是就可以选择sorted Set数据结构作为选择方案。
谈谈redis的特性以及使用场景的更多相关文章
- Redis高级特性及应用场景
Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...
- redis 高级特性 不要太好用
Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...
- Redis各种数据类型的使用场景
Redis的六种特性 l Strings l Hashs l Lists l Sets l Sorted Sets l Pub/Sub Redis各特性的应用场景 Strings Strings 数据 ...
- 国内外三个不同领域巨头分享的Redis实战经验及使用场景
Redis不是比较成熟的memcache或者Mysql的替代品,是对于大型互联网类应用在架构上很好的补充.现在有越来越多的应用也在纷纷基于Redis做架构的改造.首先简单公布一下Redis平台实际情况 ...
- (转)国内外三个不同领域巨头分享的Redis实战经验及使用场景
随着应用对高性能需求的增加,NoSQL逐渐在各大名企的系统架构中生根发芽.这里我们将为大家分享社交巨头新浪微博.传媒巨头Viacom及图片分享领域佼佼者Pinterest带来的Redis实践,首先我们 ...
- Redis实战经验及使用场景
随着应用对高性能需求的增加,NoSQL逐渐在各大名企的系统架构中生根发芽.这里我们将为大家分享社交巨头新浪微博.传媒巨头Viacom及图片分享领域佼佼者Pinterest带来的Redis实践,首先我们 ...
- Redis 11种Web应用场景举例
在"怎样让redis在你的系统中发挥作用"一文中,salvatore 'antirez' sanfilippo告诉我们如何利用redis独有的数据结构处理能力来解决一些常见问题.一 ...
- Redis的特性及运用
Redis特性 一个产品的使用场景肯定是需要根据产品的特性,先列举一下Redis的特点: 读写性能优异 持久化 数据类型丰富 单线程 数据自动过期 发布订阅 分布式 这里我们通过几个场景,不同维度说下 ...
- Redis五种数据类型应用场景
目录 1.1 回顾 2.1 应用场景 2.1.1 String 2.1.2 Hash 2.1.3 List 2.1.4 Zet 2.1.5 zset 3.1 小结 1.1 回顾 Redis的五种数据类 ...
随机推荐
- JVM集训-----内存结构
一.程序计数器/PC寄存器 (Program Counter Registe) 用于保存当前正在执行的程序的内存地址(下一条jvm指令的执行地址),由于Java是支持多线程执行的,所以程序执行的轨迹不 ...
- 使用Java窗口程序执行输入的任何cmd命令
利用Java窗口程序来执行用输入的任何命令 实现效果: Java桌面窗口,输入框.按钮,当输入框被输入命令的时候,点击按钮执行命令! 实现代码 package com.remote.remote.ag ...
- Unittest框架的从零到壹(二)
四大重要概念 在unittest文档中有四个重要的概念:Test Case.Test Suite.Test Runner和Test Fixture.只有理解了这几个概念,才能理解单元测试的基本特征. ...
- Java Web登录界面
非常激动的开通了我的第一个博客,在这里希望大家能多多指点,相互学习. 一个简单的登录界面 首先我们先把这个登录分为三块: 一.数据库 数据库我用的是MYSQL: 二.前端 三.后台 1. 后台代码的 ...
- [Odoo12基础教程]之win10中odoo12环境搭建
所需材料 1.python3.7 2.pycharm社区版及以上 3.postgresSQL10 下载链接:https://www.enterprisedb.com/thank-you-downloa ...
- day02_Requests模块
1.anaconda的安装 1.1 .安装可执行程序 1.2 .配置环境变量 根据环境变量的先后顺序去查找可执行程序文件,如果查找到就执行,如果查找不到就报错. anaconda主要配置: ...
- 我的第一个python web 开发框架
1:数据库结构设计与创建 小白做好前端html设计后,马上开始进入数据库结构设计步骤. 在开始之前,小白回忆了一下老大在公司里培训时讲过的数据库设计解说: 对于初学者来说,很多拿到原型时不知道怎么设计 ...
- 03-kubernetes 应用快速入门
目录 增删改查 增 service创建 测试其他pod通过series访问nginx 测试手动变更nginx对应的pod的ip pod和service之间的关系 service调度测试 创建myapp ...
- PHP通用分页类
Page.class.php <?php/** * 分页类 * * 调用方式: * $p=new Page(总条数,显示页数,当前页码,每页显示条数,[链接]); * print_r($p-&g ...
- 高并发编程-AQS深入解析
要点解说 AbstractQueuedSynchronizer简称AQS,它是java.util.concurrent包下CountDownLatch/FutureTask/ReentrantLock ...