博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis笔记系列(一)——Redis精要介绍与适用场景
阅读量:5743 次
发布时间:2019-06-18

本文共 1597 字,大约阅读时间需要 5 分钟。

hot3.png

    Redis是一个Key-Value存储系统,它支持存储的value类型很多,包括string、list(链表)、set(集合)、zset(有序集合)。这些数据类型都支持push/pop、add/remove以及取交集和并集等丰富的操作。Redis支持各种不同方式的排序。

为了保证效率,数据都是还存在内存中的,它也可以周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件。

Redis作为一种NoSQL解决方案,适用于以下场景:

1 对数据高并发读写

2 对海量数据的高效存储和访问

3 对数据的高可扩展像性和高可用性。(知识连接:“高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。)

Redis是非关系型、分布式的、开源的、水平可扩展的。不遵循关系型数据库的 SQL标准、ACID属性、表结构等。

这里温故而知新吧,所谓ACID属性指的是对事务的支持。

比如数据库里:

happyBKs 10000元

GF 1元

这时有个操作是happyBKs给GF汇款8000元的事务。

该事务包含了两个操作:

happyBKs  10000-8000

GF 1+8000

正常运行下,结果应该是:

happyBKs 2000元  T_T

GF  8001元   : )

但是,如果现在系统执行完第一个操作时发生了故障会怎么样呢?

如果数据库支持事务,即支持ACID,那么系统将回滚到最初状态:

happyBKs 10000元  : )

GF  1元   : (

如果数据库不支持事务,即不支持ACID,那么系统则会:

happyBKs 10000-8000=2000元  T_T

GF  1元   : (

(彩蛋:其实,happyBKs has no GF now,T_T.  本文时oschina用户happyBKs的博客文章,转载请说明出处。)

那么Redis适用哪些场景呢?

目前最大的Redis用户时新浪微博,有几百台物理机和更多的端口在运行着Redis。

Redis的适用场景:

1 应用程序直接访问Redis程序。(这种做法的缺点时如果Redis Server挂了,或者内存释放了,Redis的数据将永久丢失)

162452_8m6L_1156339.jpg

2 应用程序直接访问Redis,只有当Redis访问失败时才访问MySQL。(Redis集群会和MySQL集群进行同步。当Redis Server挂了之后,应用会去找MySQL)

162357_vYZQ_1156339.jpg

Redis数据库提供多种灵活的数据结构和数据操作,十分灵活。

具体的适用场景或者说Redis真正适合做哪些事情:

1 取最新的N个数据的操作。例如,取最新的500篇新闻。

2 排行榜应用,取TOP N操作。

3 需要精确设定过期时间的应用。(这是MySQL无法做到的。Redis可以设置过期,如用setex方法,在我的博客该系列的后面的文章会介绍。大家清关注happyBKs的博客。)

4 计数器应用。(新浪微博大量使用)

5 Uniq操作(排重,唯一操作),获取某段时间所有的数据排重值。

6 实时系统,反垃圾系统

7 Pub/Sub构建实时消息系统。(pub是发布,sub是订阅)

8 构建队列系统。(注意:Redis的数据类型中有list,对应于栈、队列等)

9 缓存

本文出处:http://my.oschina.net/u/1156339/blog/387246

如果你还是对Redis没有一个直观的感受,那么下面我将对Redis、MySQL和MongoDB做一个比较。

Redis MySQL MongoDB
有库的概念 有库的概念 有库的概念
有表的概念 无表,有集合的概念
字段,行的列

所以,NoSQL不存在表结构。

转载于:https://my.oschina.net/happyBKs/blog/387246

你可能感兴趣的文章
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
C++入门读物推荐
查看>>
TiDB 源码阅读系列文章(七)基于规则的优化
查看>>
面试中会遇到的正则题
查看>>
Spring之旅第八站:Spring MVC Spittr舞台的搭建、基本的控制器、请求的输入、表单验证、测试(重点)...
查看>>
数据结构与算法——常用排序算法及其Java实现
查看>>
你所不知的Webpack-多种配置方法
查看>>
React.js 集成 Kotlin Spring Boot 开发 Web 应用实例详解
查看>>
webpack+typescript+threejs+vscode开发
查看>>
python读excel写入mysql小工具
查看>>
如何学习区块链
查看>>
搜索问题的办法
查看>>
微信分销系统商城营销5大重点
查看>>
求职准备 - 收藏集 - 掘金
查看>>
htm5新特性(转)
查看>>
Linux-Centos启动流程
查看>>
php 设计模式
查看>>