Redis
1 互联网架构演变
1.1 单一数据库
在90年代,由于互联网没有普及。一个网站访问量并不大,单一数据库完全能够满足访问的需求。因为在哪个年下几乎都是静态的页面,动态交互型的功能不多。

1.2 Memcached + 数据库 + 垂直拆分
当数据量达到一定级别,一个机器总有存放不下的时候、数据索引的时候单台机器的内存可能也不够。架构就发生了改变。
最快速的提升查询性能的方式就是使用缓存技术、第二也需要去优化数据库:表结构建立索引、优化表的机构(垂直拆分:将一个表拆分为多个表)。

1.3 主从复制 + 读写分离
再向后面发展,进入到互联网时代的初期,互联网的产品对于读的压力特别大,我们传统的架构都是读写放在一起的,我们就将写集中在主上,释放素有的从机的来处理读压力。所以大部分的网站还是使用主从复制,读写分离。

1.4 分表分库 + 水平拆分 + mysql的集群模式
随着互联网时代从初期过渡完毕,我们数据量开始产生激增。上面的架构已经无法胜任海量数据的存储和查询。架构进一步采取了演变。水平拆分:(将表的行拆分),因为一张表的数据达到超过200w行的时候,性能势必直线下降。

1.5 慢慢发展到了移动互联——大数据年代了

2 Nosql
2.1 为什么Nosql
因为随着互联网行业的发展,数据量激增,传统的RDBMS由于自身性能的瓶颈,不适合作为大数据领域的存储工具。比如,一般的用户行为操作等等的这些日志,又多又没有规则,如mysql这样的数据库更适合存放结构化数据,所以传统数据不适合大数据领域。
Nosql:Not only sql。他非常符合海量数据下的快速查询的要求。
2.2 Nosql种类
种类非常多,但是有一个共同的特点就是一定是去除了RDBMS中的关系表达。不适用SQL。
- Memcached
- Redis
- HBase
- MongoDB
- ClickHouse
…
- 大数据时代3V+3高
- Volume : 海量
- Variety : 多样
- velocity :实时
----------------------
- 高并发
- 高可扩
- 高性能
3 阿里架构演变
1999 第一代架构: Perl,CGI,Oracle
2000 第二代架构:Java, Servlet
2001-2004第三代架构:EJB时代,Dao、Service
2005-2007第四代架构:去EJB重构:Spring+iBatis+Webx。底层架构:iSearch,MQ+ESB,数据挖掘
2008-2009第五代架构:Memcached集群 + mysql + 数据切分, 分布式存储,Hadoop,KV, CDN
2010安全,镜像:安全、镜像、应用服务器升级、秒杀、Nosql、SSD
…
敏捷开发、开放式开发、用户体验
4 Redis
4.1 介绍
Remote Dictionary Server。开源,基于C语言开发,基于BSD协议(只要基于这个协议的都可以修改源码)的KV的Nosql的分布式数据库。
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
它支持多种类型的数据结构,如
字符串(strings),
散列(hashes),
列表(lists),
集合(sets),
有序集合(sorted sets) 与范围查询,
bitmaps,
hyperloglogs 和
地理空间(geospatial) 索引半径查询。
Redis 内置了
复制(replication),LUA脚本(Lua scripting),
LRU驱动事件(LRU eviction),事务(transactions)
和不同级别的
磁盘持久化(persistence),
并通过
Redis哨兵(Sentinel)和自动
分区(Cluster)提供高可用性(high availability)。
4.2 redis的特点
- redis支持数据的持久化:AOF和RDB
- redis本身不仅仅只是KV的数据,还支持多种数据结构:List、Set、Hash…
- redis支持数据的备份。主从
4.3 做什么
- 内存存储和持久化
- 取最新的数据
- 单点登陆——模拟HttpSession
- 计数器/定时器
- 保持offset
4.4 网址
http://www.redis.cn/
https://www.redis.net.cn/
4.5 安装
##1. 安装
[root@hadoop ~]# yum -y install gcc-c++
[root@hadoop software]# tar -zxvf redis-3.2.8.tar.gz -C /opt/apps/
[root@hadoop redis-3.2.8]# make
[root@hadoop redis-3.2.8]# make PREFIX=/opt/apps/redis-3.2.8/bin install
##2. 配置环境变量
4.6 启动
4.6.1 默认的连接
##1. 启动前台服务
[root@hadoop bin]# ./redis-server
##2. 启动客户端
[root@hadoop ~]# redis-cli
4.6.2 后台启动,使用配置连接
##1. 配置后端启动
[root@hadoop redis-3.2.8]# cp redis.conf redis.conf.bak
[root@hadoop redis-3.2.8]# vi redis.conf
bind 0.0.0.0
port 6379
daemonize yes
##2. 启动redis的服务
[root@hadoop redis-3.2.8]# redis-server redis.conf
[root@hadoop redis-3.2.8]# ps -ef | grep redis
root 4196 1 0 16:52 ? 00:00:00 redis-server 0.0.0.0:6379
root 4325 30685 0 16:53 pts/0 00:00:00 grep --color=auto redis
##3. 客户端连接redis服务
[root@hadoop redis-3.2.8]# ./redis-cli -h 127.0.0.1 -p 6379
# 如果有密码,则需要通过auth 指定密码
[root@hadoop redis-3.2.8]# auth password
4.7 redis.conf
详细的参考:Redis的配置文件解读(redis.conf)
4.7.1 INCLUDES
# Redis configuration file example.
#
# 启动redis服务的

Redis 是一个高性能的内存数据结构存储系统,支持多种数据类型,如字符串、哈希、列表、集合、有序集合等。在互联网架构演变中,Redis 被广泛用于缓存、数据库和消息中间件。Redis 提供两种持久化方式:RDB(快照)和 AOF(追加日志)。此外,Redis 支持主从复制实现读写分离,哨兵系统则提供了高可用性,能自动检测并故障转移。Redis 的API包括对各种数据类型的增删改查操作,以及事务和发布/订阅功能。

484

被折叠的 条评论
为什么被折叠?



