论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
主机系统
›
linux
›
Redis远程字典服务器(1)—— 初识Redis
Redis远程字典服务器(1)—— 初识Redis
丝
金牌会员
|
2024-8-14 18:49:22
|
显示全部楼层
|
阅读模式
楼主
主题
987
|
帖子
987
|
积分
2961
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
目录
一,关于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客户端和服务器,并启动服务器再让客户端连接上服务器
sudo apt install redis
复制代码
如果是Centos,就八上面的apt换成yum即可
然后就是修改下设置文件,因为Redis是基于网络的,以是设置文件会默认将Redis的连接IP设为127.0.0.1,我们必要修改成0.0.0.0,表示该服务器可以支持任何其它IP来举行连接
vim /etc/redis/redis.conf
复制代码
修改完成后我们直接启动redis服务器(都必要root权限)
sudo service redis-server start
复制代码
也可以输入这个,查看服务状态,里面有的active,表示正常运行
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 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
丝
金牌会员
这个人很懒什么都没写!
楼主热帖
ShardingSphere 异构迁移最佳实践:将3 ...
本科毕设CTF平台-MarsCTF
MySQL 5.7 安装教程(全步骤、保姆级教 ...
KubeEdge 1.12版本发布,稳定性、安全 ...
Grafana 系列文章(一):基于 Grafana ...
15.Linux和Windows入侵排查
Sickos1_1
学生信息管理系统(JAVA+MYSQL) ...
mysql数据迁移,通用windows->linux,li ...
Redis介绍与安装
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
Java
DevOps与敏捷开发
容器及微服务
Mysql
Oracle
快速回复
返回顶部
返回列表