什么是Redis
1Redis
- 1Redis是什么
-
- 1.1Redis应用场景,它能做什么?
- 1.2Redis支持丰富数据类型
1Redis是什么
Redis如今已成为最流行的非关系型数据库之一;它是一个使用C语言标准编写而成的开源软件系统;该系统支持多种数据结构;能够连接网络设备;运行于内存环境;并且提供可选择持久化的功能;它具有以下特点:它是一个键-值对数据库系统;它能够存储和管理大量数据;它提供快速的数据访问能力;它支持分布式架构设计;并且具备良好的扩展性与容灾能力。
- 以内存为中心运行,并具备较高的运行效率
- 具备分布式架构,在理论上具有无限扩展的可能性
- key-value存储系统
- 开源项目采用ANSI C语言实现,并遵循BSD协议。该系统支持网络功能,并提供日志存储类型的选择。它既可以基于内存运行又可以持久化存储,并为多种编程语言提供了API接口
相比于其他数据库类型,Redis具备的特点是:
1. C/S通信机制
2. 单进程单线程架构
3. 多样化的数据类型集合
4. 持久化机制
5. 强调其高并发读写的性能——高并发读写能力出色
6. 支持Lua脚本语言
Redis跟memcache不同的是:
Redis存储的数据具有持久性,在断电或系统重启动时也不会丢失信息。
由于Redis的数据存储由内存存储模块、磁盘存储模块以及日志文件构成,在系统重启动时,在磁盘上重建并加载相关的数据到内存中,并且这些参数可通过相应的配置文件进行设置。
因此使得Redis实现了数据的持久化功能。
Redis具备主从模式支持,并允许用户配置集群结构;这种设计使得其能够更为轻松地承载大型项目;这也是其显著的优势之一。
1.1Redis应用场景,它能做什么?
会话缓存(应用最广泛的一种数据存储方式)
5. 消息队列系统(比如支付相关的事务处理)
6. 活动排行及计数功能
7. 消息发布与订阅功能(消息通知系统)
8. 商品列表、评论列表等基础功能
众多语言都支持Redis, 因为Redis的数据交换速度极快, 因此在服务器端常使用Redis来存储那些频繁需要从磁盘读取的数据, 从而显著减少系统直接从磁盘读取数据所需的I/O开销, 并能极大地提升处理效率。
以大型网站为例举例说明:一个 typical homepage每天都会有超过一百万的访问量,并且其中有一个板块专门用于展示推荐新闻的内容。如果直接从传统的数据库中进行数据查询的话,则会导致每天需要进行一百万次以上的数据库请求操作。如前所述,在前面已经提到了这一点:Redis提供了丰富的数据类型支持,并且这种类型的热点数据非常适合用 Redis 来存储(通常存放在内存中)。当需要调用这些数据时可以直接从内存中快速获取,并且这种方式不仅能够显著提升运行效率还能有效减少服务器的负载压力
1.2Redis支持丰富数据类型
- (一)String
这个话题较为基础。基本的集合与获取操作中, value不仅可以指定为 String 类型也可指定为数值类型。通常用于实现较为复杂的计数逻辑。
*(二)hash
这里value存储的是具有组织化特性的对象,在单点登录场景中便于操作其中的具体字段。在实际应用中,在单点登录系统中通常会采用这种数据结构来存储用户信息,在这种设计模式下以cookieId作为键(key),将缓存过期时间设定为30分钟即可实现类似于session的功能。
-
(三)list
采用列表数据结构方案具备基本的消息队列功能。此外还有另一个应用能够通过lrange命令实现基于Redis的分页操作具有高效的性能优势并且实际应用中表现出良好的用户体验水平例如在取行情信息时就可以作为生产者角色运行。LIST数据结构能够很好地实现先进先出的工作原理。- (四)set
因为set堆放的是一堆不重复值的集合。所以可以做全局去重的功能。为什么不用JVM自带的Set进行去重?因为我们的系统一般都是集群部署,使用JVM自带的Set,比较麻烦,难道为了一个做一个全局去重,再起一个公共服务,太麻烦了。
另外,就是利用交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能。
- (四)set
-
(五)sorted set
sorted set新增了score这个权重参数,集合中的元素能够根据score进行排序。
可用于构建排行榜系统,提取前N项数据。
