Redis远程字典服务器(1)—— 初识Redis

  金牌会员 | 2024-8-14 18:49:22 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 507|帖子 507|积分 1521

目录
一,关于Redis
二,Redis特性先容
2.1 In-memory data structures(在内存中存储数据)
2.2 Programmablilty(编程能力)
2.3 Extensibility(扩展能力)
2.4 Persistence(长期化)
2.5 Clustering(集群)
2.6 High availability(高可用)
三,Redis应用场景
3.1 Real-time data store(实时的数据存储)
3.2 session storage(会话存储)
3.3 Streaming & messaging(消息队列)
四,Redis为什么快?
五,在Linux上安装Redis
六,Redis客户端先容


一,关于Redis

Redis是一个和MySQL一样的“客户端 - 服务器” 布局的程序,Redis客户端和服务器可以在同一个主机上,也可以在差别主机上。
Redis是一个能在内存中存储数据的中间件,可以用作数据库,也可以用作数据缓存,在分布式系统中能大展拳脚
二,Redis特性先容

2.1 In-memory data structures(在内存中存储数据)

MySQL主要是通过“”的方式来存储和构造数据的,称为“关系型数据库”。
而Redis主要是通过“键值对”的方式来存储构造数据的 --> key是string,value可以是其它的数据布局 --> 称为“非关系型数据库”。
2.2 Programmablilty(编程能力)

针对Redis的操纵,我们可以直接通过简单的交互式命令举行操纵,也可以通过一些脚本的方式,批量执行一些操纵 --> Lua语言,也是编程语言
2.3 Extensibility(扩展能力)

我们可以在Redis原有的功能基础上,再举行扩展,Redis提供了一组API(C,C++,Rust,通过这几个语言编写Redis扩展,本质上就是一个动态链接库)
除了它提供的API,我们可以去本身扩展Redis的功能,比如Redis自身提供了很多的数据布局和命令,通过扩展可以让Redis可以支持更多的数据布局和命令
2.4 Persistence(长期化)

Redis是把数据放在内存上的,这样就可以快速访问而内存上的数据是易失的,历程退出/系统重启等等事件都会使内存没了。
以是Redis会把部门数据存储在硬盘上,内存为主,硬盘为辅,硬盘相当于备份内存数据,如果Redis重启,就会在重启时加载硬盘数据到内存。
2.5 Clustering(集群)

Redis作为一个分布式系统的中间件,能够支持集群是很关键的
一个Redis存储的数据是有限的,内存也是有限的,就可以引入多个服务器,摆设多个Redis节点,每个节点存储数据的一部门
2.6 High availability(高可用)

Redis自身也支持主从布局的,从节点相当于主节点的备份,保证系统的可用性(主节点挂了,从节点也能顶上,这个过程是自动的)
三,Redis应用场景

3.1 Real-time data store(实时的数据存储)


  • 这个就是把Redis当做了数据库,应用与对实时性要求比力高的场景,必要有更低的延迟和更高的吞吐量
  • 大多数情况下,对于数据存储的考虑起首是“大”,即存储的空间要大,但是仍然有一些场景考虑的是“快”。
  • 比如“搜索引擎”,广告搜索(商业搜索),对于性能的要求是非常高的,以是搜索引擎中没有用到MySQL这样的数据库,以是就把所有必要检索的数据都存储在内存中,就是利用雷同于Redis这样的内存数据库来完成的
  • 固然,利用这样的内存数据库存储大量的数据,必要不少的硬件资源的,以是一般只有不差钱的大厂才用得起
  • Redis也可以和MySQL一起利用,遵循二八原则,将热点数据存在Redis中,这种时候Redis存的是全量数据,不能随便丢。也可以让Redis存部门数据,全量数据以mysql为主
3.2 session storage(会话存储)


  • cookie 是实现用户身份信息的保存,同时也必要session共同(前者只是在浏览器这边存储了一个用户的身份标识,session才是真正存储在服务器上的用户的数据)
  • 之前的session是直接存储在应用服务器上的,现在酿成分布式系统后,引入负载均衡器,用户服务器有多个,用户的请求大概会被随机分发到差别的服务器,以是假设用户第一次请求,负载均衡器分到了1号服务器,天生了会话,但是用户第二次请求时,负载均衡器大概会把数据发到2号服务器,由于2号服务器没有会话,以是大概会重新登录,这样的反复登录会造成大量的资源浪费
  • 办理:1:想办法让负载均衡器把同一个用户的请求始终打到同一个服务器上     2:把会话数据单独拿出来,放到一台独立的服务器上,每个应用服务器都把会话放到这个服务器上,访问也访问这一个
3.3 Streaming & messaging(消息队列)


  • 此处的消息队列不是Linux历程间通信的那个,此处的消息队列是一个单独的服务器,只是有了消息队列的功能
  • 基于这个我们就可以实现一个基于网络版本的生产者消费者模子
  • 优势:1:解耦合      2,削峰填谷
  • 业界也有很多知名的消息队列:RabbitMQ,Kafka,RocketMQ等,Redis也是提供了消息队列的功能的,是Redis研发的初心
  • 但我们险些不利用Redis作为消息队列利用
四,Redis为什么快?


  • Redis数据在内存中,就比访问硬盘的数据库,要快很多
  • Redis的焦点功能都是比力简单的逻辑 —— 焦点功能根本都是操纵内存中的数据布局
  • 从网络角度上,Redis利用了IO多路复用的方式(epoll,用一个线程管理很多个socket)
  • Redis利用的是单线程模子(虽然更高版本的Redis引入了多线程,但是只是在网络IO用到了,焦点业务逻辑还是单线程),减少了不必要的线程之间的竞争开销,提高效率(多线程不一定能提高效率,条件是CPU麋集型的使命,利用多线程可以充分利用CPU多核资源,但是Redis焦点使命,主要就是操纵内存的数据布局,是比力简单快捷的,不会吃很多CPU资源 —— 没有银弹)
  • Redis利用C语言开发的,以是快(该结论太勉强,不太承认),比如MySQL也是C语言开发的,凭啥Redis快
五,在Linux上安装Redis

下面展示在Ubuntu环境上安装Redis客户端和服务器,并启动服务器再让客户端连接上服务器
  1. sudo apt install redis
复制代码
 如果是Centos,就八上面的apt换成yum即可

然后就是修改下设置文件,因为Redis是基于网络的,以是设置文件会默认将Redis的连接IP设为127.0.0.1,我们必要修改成0.0.0.0,表示该服务器可以支持任何其它IP来举行连接
  1. vim /etc/redis/redis.conf
复制代码
 修改完成后我们直接启动redis服务器(都必要root权限)
  1. sudo service redis-server start
复制代码

也可以输入这个,查看服务状态,里面有的active,表示正常运行 
  1. service redis-server status
复制代码
 
 然后就是用客户端连接服务器,直接在命令行输入 redis-cli 即可;进入到客户端以后,输入ping,如果打印PONG,表示客户端正常运行。

然后我们也可以在其它主机上利用特定IP和端口来连接Redis服务器,如下图:
 

六,Redis客户端先容

Redis也是一个客户端-服务器 布局的程序,MySQL也是这样,redis客户端和服务器可以在同一个主机上,也可以在差别主机上。并且服务器可以给多个客户端提供服务,Redis服务器是本体,负责存储和管理数据
Redis也有很多形态:


  • 自带命令行的客户端:redis-cli  或者也可以redis-cli -h 127.0.0.1 -p 6379
  • 图形化界面:桌面程序,web程序,但是图形化程序依赖与Windows。而以后在实际工作中,用来办公的windows系统,连接到服务器大概会有很多限定,以是不能保证和Linux一样,能100%连上redis服务器(Windows中间大概会经历跳板机,堡垒机,权限校验等)
  • 基于Redis的API自行开发客户端:工作中最主要的形态,非常雷同于MySQL的C语言API和JDBC
咱们说Redis快,是相对于MySQL这样的关系型数据库的,但是如果是和内存中的操纵变量相比,就没有优势了,乃至更慢。
比如我要存一个键值对,可以用redis来存,也可以直接在内存中搞个hash map来存,但是利用hash map是直接操纵内存,利用redis是先通过“网络”,再操纵内存的。
以是,是否要利用redis是必要结合实际业务的,引入redis会变慢,但是可以把数据单独存储,服务器重启不会影响到数据内容,假设未来要扩展分布式系统,利用redis是最佳的

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表