Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Redis入门概述

Redis入门概述

作者头像
百思不得小赵
发布于 2022-12-01 06:52:10
发布于 2022-12-01 06:52:10
27600
代码可运行
举报
文章被收录于专栏:小赵Java总结小赵Java总结
运行总次数:0
代码可运行

文章目录


一、NoSQL数据库

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。它相比于传统的关系型数据库有以下几个区别:不遵循SQL标准、不支持ACID原则、它的性能远超于SQL。

适用的场景

  1. 对数据高并发的读写
  2. 海量数据的读写
  3. 对数据有较高的扩展性

不适合的场景

  1. 需要支持事务相关的操作
  2. 基于sql的结构化查询存储,处理复杂的关系,需要即时查询

最早出现的NoSql数据库叫做Memcache,它的数据都保存在内存中,需要频繁访问数据库的网站访问速度提升效果十分显著,一般不持久化,它只支持简单的key-value模式,支持类型相对单一,它的作用一般是作为缓存数据库辅助持久化的数据库。

二、Redis 概述

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。它的数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

适用场景

场景一:配合关系型数据库做高速缓存

  • 将高频次,热门访问的数据放到缓存中,降低数据库IO,提高查询性能
  • 在分布式架构,最常见的问题就是session存在哪里,使用redis做缓存,将session数据放到redis中实现session共享。

场景二:多样的数据结构存储持久化数据

  • 最常见的网站Top N 数据、最新的N 个数据、手机验证码等等,通过Redis的数据类型结构进行持久化的存储。

Redis是单线程+多路IO复用技术

多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)。

一个场景说明多路IO复用技术: 相信大家都有去火车站买票的经历,遇到节假日的时候一票难求,这时在火车站就会有一种人,可以替人买票,我们亲切的将其称之为黄牛。有了黄牛的出现,我们可以把买票的需求告诉黄牛,让黄牛帮我们购买。有一天,有三个人找到黄牛让其帮忙购票,这时黄牛去火车站买票的过程为单线程操作,如果黄牛买到了三个人中某个人的票,通知其去黄牛哪里取票即可。假设第一个人想要去上海的票,通知黄牛去买票,黄牛在买票的时候,第一个人不用一直等待,可以做自己的事情,例如:吃饭、睡觉等,等到黄牛买到票后,通知第一个人取票就可。其他两个人也类似,也就是说这三个人都是在买票,但是在没有买到票的时候一直在干活,CPU一直处于工作状态,这个过程就是多路IO复用

与Redis不同的是Memcache底层采用的是多线程+锁进行实现的。

三、在Linux环境下安装Redis

安装步骤

第一步:下载Redis(我下载的是6.2.7版本)

点击进入Redis官方下载网页

第二步:测试 gcc版本 (安装redis依赖gcc)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gcc --version

如果没有gcc的话通过如下命令进行安装C语言编译环境

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install centos-release-scl scl-utils-build
yum install -y devtoolset-8-toolchain
scl enable devtoolset-8 bash

第三步:解压下载的Redis tar.gz文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar -zxvf xxx

第四步:进入解压后的文件 执行make命令进行编译

第五步:继续执行: make install

安装成功后会默认安装到/usr/local/bin路径

  • redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
  • redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
  • redis-check-dump:修复有问题的dump.rdb文件
  • redis-sentinel:Redis集群使用
  • redis-server:Redis服务器启动命令
  • redis-cli:客户端,操作入口

前台启动(不建议)

前台启动,命令行窗口不能关闭,否则服务器停止

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
redis-server

后台启动(推荐)

  • 备份redis.conf,拷贝一份redis.conf到其他目录
  • 台启动设置daemonize no改成yes
  • Redis启动
  • 用客户端访问:redis-cli
  • .Redis关闭

四、Redis配置文件解析

  • 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit。
  • 类似jsp中的include,多实例的情况可以把公用的配置文件提取出来
  • 默认情况bind=127.0.0.1只能接受本机的访问请求不写的情况下,无限制接受任何ip地址的访问,生产环境肯定要写你应用服务器的地址;服务器是需要远程访问的,所以需要将其注释掉
  • 将本机访问保护模式设置no
  • 默认端口号为:6379
  • 一个空闲的客户端维持多少秒会关闭,0表示关闭该功能,即永不关闭。
  • 是否为后台进程,设置为yes,守护进程,后台启动
  • 存放pid文件的位置,每个实例会产生一个不同的pid文件
  • 设定库的数量 默认16,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
  • 设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据.
  • 建议必须设置,否则,将内存占满,造成服务器宕机
  • 设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。
  • 如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Redis为什么是单线程?高并发响应快?
1.redis是基于内存的,内存的读写速度非常快(纯内存); 数据存在内存中,数据结构用HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)。
一个会写诗的程序员
2021/03/23
5.4K0
Redis为什么是单线程?高并发响应快?
Redis面试题(一): Redis到底是多线程还是单线程?
Q: 那这样子,在读取socket1的数据时,如果其它socket有数据来,那么也要等到socket1读取完了才能继续读取其它socket的数据吧。那不是也阻塞住了吗?而且读取到的数据也要开启线程处理吧,那这和多线程IO有什么区别呢? A: 1.CPU本来就是线性的不论什么都需要顺序处理并行只能是多核CPU 2.io多路复用本来就是用来解决对多个I/O监听时,一个I/O阻塞影响其他I/O的问题,跟多线程没关系. 3.跟多线程相比较,线程切换需要切换到内核进行线程切换,需要消耗时间和资源.而I/O多路复用不需要切换线/进程,效率相对较高,特别是对高并发的应用nginx就是用I/O多路复用,故而性能极佳.但多线程编程逻辑和处理上比I/O多路复用简单.而I/O多路复用处理起来较为复杂.
全栈程序员站长
2022/08/18
4620
Redis面试题(一): Redis到底是多线程还是单线程?
《Redis核心技术与实战》学习总结(3)
我们通常说的Redis单线程,主要是指:Redis 6.0 之前版本的 网络I/O 和 键值对读写 是由一个线程来完成的。
Edison Zhou
2022/03/11
3920
《Redis核心技术与实战》学习总结(3)
Redis 概述安装
多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池)
用户9615083
2022/12/25
2870
Redis 概述安装
1 Redis 下载与安装
(推荐)Github下载:https://github.com/redis/redis
收心
2022/01/14
5930
1 Redis 下载与安装
【Redis高手修炼之路】初学Redis——概述以及Redis安装使用教程
                1.2.1High Performance - 对数据库高并发读写的需求
陶然同学
2023/02/27
9010
【Redis高手修炼之路】初学Redis——概述以及Redis安装使用教程
02.redis的线程IO和通讯协议
1.redis的线程IO 线程IO Redis是个单线程程序!但是他有高并发特性,单个节点可以支持10w的QPS。除了redis是单线程,Nginx也是单线程的。单线程为什么如此之快?单线程有如何处
Share猿
2019/08/16
7020
02.redis的线程IO和通讯协议
聊聊IO
应用程序向操作系统发出IO请求:应用程序发出IO请求给操作系统内核,操作系统内核需要等待数据就绪,这里的数据可能来自别的应用程序或者网络。一般来说,一个IO分为两个阶段:
你呀不牛
2021/09/18
5400
聊聊IO
CentOS7(Linux)源码安装Redis
项目中经常需要用到Redis做缓存数据库,可是还有小伙伴不会在Linux上安装Redis,毕竟我们开发的项目都是要在服务器上运行的,今天就来讲讲如何在CentOS7环境使用源码进行安装Redis。
一个正经的程序员
2022/04/11
1.2K0
CentOS7(Linux)源码安装Redis
初识Redis
是一个开源的使用ANSI ,C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
张小驰出没
2021/12/06
2620
初识Redis
Redis从入门到放弃(1):安装配置
Redis是一个高性能的开源key-value数据库。它被广泛应用于缓存、会话存储、实时分析、消息队列等场景。Redis具有以下三个主要特点:
夕阳也是醉了
2023/10/16
2570
Redis入门之认识redis(一)
  1) NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。
用户2417870
2020/10/28
4050
Redis入门之认识redis(一)
Redis安装(Windows和Linux)详细图解
Redis是什么? Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。是NoSql之一,也被称作结构化数据库。 官网:https://redis.io/ 中文官网:http://www.redis.cn/
唔仄lo咚锵
2020/09/15
9260
Redis缓存雪崩、穿透、击穿应对及常见精选面试题
随着互联网技术的持续发展,各种类型的应用层出不穷,使得当今成为云计算、大数据盛行的时代,因此也对应用的性能要求更高,高并发低延迟、海量数据流量、大规模集群管理已成基础要求。为了克服这些问题,NoSQL技术应运而生,它同时具备了高性能、可扩展性强、高可用等优点,受到开发者的青睐。Redis已成为如今最受欢迎的技术之一,也成了分布式项目中的缓存标配。
攻城狮的那点事
2020/09/10
5500
Redis缓存雪崩、穿透、击穿应对及常见精选面试题
Redis超详细总结
在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。
说故事的五公子
2020/05/07
9670
Redis超详细总结
Redis之入门介绍
我的笔记本cpu是64位的,操作系统也是64位的,问题应该如虚拟机右下角提示所说,
yuanshuai
2022/08/22
5140
Redis之入门介绍
【Redis】概述与安装
Redis(Remote Dictionary Server ),即远程字典服务;
sidiot
2023/08/31
2520
【Redis】概述与安装
干货!Linux上安装Redis步骤(图文讲解)
Remote Dictionary Server(远程字典服务器),是一个用C语言编写的、开源的、基于内存运行并支持持久化的、高性能的NoSQL数据库.也是当前热门的NoSQL数据库之一。
牛仔码农
2021/08/19
16.2K0
分布式缓存Redis高级应用实战之为什么要用缓存机制
一遍导致数据库缓慢或宕机的都是查询导致的,update、delete,80%的SQL都是查询,如果能够将这80%SQL抽离到缓存中;
艾编程
2020/06/09
5440
Redis常用数据类型使用及基本知识
  08年的时候有一个意大利西西里岛的小伙子,笔名antirez(http://invece.org/),创建了一个访客信息网站   LLOOGG.COM。这个网站是干嘛的呢,   其实就是跟我们的百度统计一样!需要知道网站的访问情况,比如访客的IP、操作系统、浏览器、使用的搜索关键词、所在地区、访问的网页地址等等。我们不用自己写代码去实现这个功能,只需要在全局的 footer 里面嵌入一段JS 代码就行了,当页面被访问的时候,就会自动把访客的信息发送到这些网站统计的服务器,然后我们登录后台就可以查看数据了。   LLOOGG.COM 提供的就是这种功能,它可以查看最多10000条的最新浏览记录。 这样的话,它需要为每一个网站创建一个列表(List),不同网站的访问记录进入到不同的列表。如果列表的长度超过了用户指定的长度,它需要把最早的记录删除(先进先出)。
向着百万年薪努力的小赵
2022/12/02
3430
相关推荐
Redis为什么是单线程?高并发响应快?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验